DataAdapter.Fill returns 行计数但 Rows.List 为空
DataAdapter.Fill returns the row count but Rows.List is null
对此我真的很纳闷。我在 SQL 服务器中有一个 table,具有三个 nvarchar(255)
列和几行,仅用于测试。以下代码正确 returns 列名和行数 2 但 Rows.List = null
。如果我使用 reader.Read()
我可以读取行中的数据,以便查询返回数据。任何更改 table 中数据的查询(例如 INSERT INTO ...
都将完美运行。
DataTable results = new DataTable;
int rowsAffected = 0;
string connectionString = "Server=<serverName>;Database=<databaseName>;Integrated Security=SSPI";
string query = "SELECT * FROM testTable";
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(query, conn))
using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command))
rowsAffected = dataAdapter.Fill(results);
完成后,results.Rows.Count = 2
正确,results.Rows.List = null
错误。为什么没有任何数据返回给我?
我不确定您要完成什么,但方法 DataRowCollection.List
是 1。) protected
,因此您可能只是在调试器中看到它的值,以及 2.) returns 总是 null
因为这是反映的实现:
protected virtual ArrayList List => (ArrayList) null;
您已经在 results.Rows
中有了 DataRowCollection
,因此您可以在 foreach
中枚举它或通过它的索引访问 s DataRow
。如果你真的想要 List<DataRow>
你可以使用:
List<DataRow> rowList = results.AsEnumerable().ToList();
如果您想要 DataRow[]
,请改用 ToArray
。
对此我真的很纳闷。我在 SQL 服务器中有一个 table,具有三个 nvarchar(255)
列和几行,仅用于测试。以下代码正确 returns 列名和行数 2 但 Rows.List = null
。如果我使用 reader.Read()
我可以读取行中的数据,以便查询返回数据。任何更改 table 中数据的查询(例如 INSERT INTO ...
都将完美运行。
DataTable results = new DataTable;
int rowsAffected = 0;
string connectionString = "Server=<serverName>;Database=<databaseName>;Integrated Security=SSPI";
string query = "SELECT * FROM testTable";
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand(query, conn))
using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command))
rowsAffected = dataAdapter.Fill(results);
完成后,results.Rows.Count = 2
正确,results.Rows.List = null
错误。为什么没有任何数据返回给我?
我不确定您要完成什么,但方法 DataRowCollection.List
是 1。) protected
,因此您可能只是在调试器中看到它的值,以及 2.) returns 总是 null
因为这是反映的实现:
protected virtual ArrayList List => (ArrayList) null;
您已经在 results.Rows
中有了 DataRowCollection
,因此您可以在 foreach
中枚举它或通过它的索引访问 s DataRow
。如果你真的想要 List<DataRow>
你可以使用:
List<DataRow> rowList = results.AsEnumerable().ToList();
如果您想要 DataRow[]
,请改用 ToArray
。