我目前正在用IronPython/WPF编写一个应用程序,并将在生产期间大量使用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 (数据)返回:
<System.Data.SqlClient.SqlDataReader object at 0x00000000000002FF [System.Data.SqlClient.SqlDataReader]>
但是,print(data[0])只返回SQL中行的索引,[1]下一列等。
我想访问行中的所有数据(行可以是可变长度、不同查询等)。
我怎么才能让这个起作用?
编辑:
我已经用以下代码成功地从响应的一行中提取了所有数据;
for i in range(1, data.FieldCount):
print(data.GetName(i))
print(data.GetValue(i))只需要确定如何对所有返回的行执行这个迭代,这样我就可以将它传递给dict/datagrid。
发布于 2019-10-08 04:27:37
我找到了一个对我有用的解决方案。
根据需要使用SqlAdapter和数据集存储/查看数据
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].DefaultViewhttps://stackoverflow.com/questions/58279449
复制相似问题