首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过System.Data解析SQL数据

通过System.Data解析SQL数据
EN

Stack Overflow用户
提问于 2019-10-08 02:23:08
回答 1查看 333关注 0票数 0

我目前正在用IronPython/WPF编写一个应用程序,并将在生产期间大量使用select和set语句。

我已经成功地连接到服务器,可以通过查询获取我想要的数据。但是,我在解析响应数据时遇到了问题。见下面的代码

代码语言:javascript
复制
import clr
clr.AddReference('System.Data')
from System.Data import *

query = 'sqlquery'

conn = SqlClient.SqlConnection(--sql connection properties--)
conn.Open()

result = SqlClient.SqlCommand(query, conn)
data = result.ExecuteReader()

while data.Read():
    print(data[0])

data.Close()
conn.Close()

我遇到的问题是print(data[0])需要打印任何一个SQL响应,一个简单的print (数据)返回:

<System.Data.SqlClient.SqlDataReader object at 0x00000000000002FF [System.Data.SqlClient.SqlDataReader]>

但是,print(data[0])只返回SQL中行的索引,[1]下一列等。

我想访问行中的所有数据(行可以是可变长度、不同查询等)。

我怎么才能让这个起作用?

编辑:

我已经用以下代码成功地从响应的一行中提取了所有数据;

代码语言:javascript
复制
for i in range(1, data.FieldCount):
     print(data.GetName(i))
     print(data.GetValue(i))

只需要确定如何对所有返回的行执行这个迭代,这样我就可以将它传递给dict/datagrid。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-08 04:27:37

我找到了一个对我有用的解决方案。

根据需要使用SqlAdapter和数据集存储/查看数据

代码语言:javascript
复制
def getdataSet(self, query):
        conn = SqlClient.SqlConnection(---sql cred---))
        conn.Open()

        result = SqlClient.SqlCommand(query, conn)
        data = SqlClient.SqlDataAdapter(result)

        ds = DataSet()
        data.Fill(ds)

        return ds

def main(self):
        ds = self.getdataSet("query")

        self.maindataGrid.ItemsSource = ds.Tables[0].DefaultView
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58279449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档