通过 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
我目前正在 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