我目前正在尝试从用C#编写的WPF应用程序中的数据库中检索记录。我正在使用SQL数据读取器,它似乎可以正常连接,但以下内容给了我NullReferenceException:
if (isString == true) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT PartNumber FROM LoanerItems", loanersConnection); DataTable datatable = new DataTable(); adapter.Fill(datatable); for (int i = 0; i < datatable.Rows.Count - 1; i ++) { passBackRecords[i] = datatable.Rows[i].ToString(); } }
同样,我似乎正在连接到数据库,但是如果我通过调试器运行,则数据表似乎不会被填充。
我的连接字符串,以防万一:
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(); scsb.DataSource = "LLOYD2\\"; scsb.InitialCatalog = "LoanersTest"; scsb.IntegratedSecurity = true; scsb.ConnectTimeout = 30;
我当前使用的是带有两个记录的测试数据库,而不是最终数据库。我尝试使用Transact-SQL编辑器,但记录似乎很好。
*编辑:
初始化passBackRecords之后,以下代码开始引发ArguementOutOfRange异常:
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM LoanerItems", loanersConnection); DataTable datatable = new DataTable(); adapter.Fill(datatable); for (int i = 0; i < datatable.Rows.Count - 1; i++) { passBackRecords[i] = datatable.Rows[i]["BCPartNumber"].toString; }
我都尝试过:
for (int i = 0; i < datatable.Rows.Count - 1; i++)
和:
for (int i = 1; i < datatable.Rows.Count; i++)
但似乎都行不通。
datatable.Rows.Count;
显示数据表中有两行。
即使返回零行,DataTable也不会是null。但是,这一行有一个地方:
DataTable
null
passBackRecords[i] = datatable.Rows[i].ToString();
将会失败-当passBackRecords是时null。另一个可能的位置是这样的:
passBackRecords
.Rows[i].ToString();
如果该行中的值是,则在调用时null也会得到a 。但是我 差点* 把钱花在尚未初始化的事实上。NullReferenceException``ToString() *passBackRecords
NullReferenceException``ToString()