通过 System.Data 解析 SQL 数据

Parsing SQL data via System.Data

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

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

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(data) returns:

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

然而 print(data[0]) 仅 returns SQL 中行的索引,[1] 下一列等

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

我怎样才能让它工作?

编辑:

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

for i in range(1, data.FieldCount):
     print(data.GetName(i))
     print(data.GetValue(i))

只需要确定如何对所有返回的行执行此迭代,以便我可以将其传递给 dict/datagrid

我找到了适合我的解决方案。

稍后根据需要利用 SqlAdapter 和数据集 store/view 数据

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