【发布时间】:2015-09-07 00:24:39
【问题描述】:
我对该主题进行了研究,并遇到了很多关于这个已经问过的问题,但这是不同的情况。
我的 dbConnection 类中有以下代码:
public void GetCertainComputer(string ComputerBarcode)
{
cnn.Open();
tbl = new DataTable();
cmd = new SqlCommand(String.Format("exec ComputerInsertUpdateDelete 4, @CompBarcode = '{0}'", ComputerBarcode), cnn);
reader = cmd.ExecuteReader();
for (int i = 0; i < reader.FieldCount; i++)
{
tbl.Columns.Add(reader.GetName(i));
}
while (reader.Read())
{
row = tbl.NewRow();
for (int i = 0; i < reader.FieldCount; i++)
{
row[i] = reader[i];
}
tbl.Rows.Add(row);
}
cnn.Close();
reader.Close();
cmd.Dispose();
}
在我的 MainWindow 中,我调用了这个函数:
db.GetCertainComputer(DGMain.SelectedValue.ToString());
System.Windows.MessageBox.Show(db.tbl.Rows.Count.ToString()); //Row count for Debugging.
txtBarcodeUpd_Computer.Text = db.tbl.Rows[0][0].ToString();
txtDescriptionUpd_Computer.Text = db.tbl.Rows[0][1].ToString();
cbMouseUpd_Computer.SelectedValue = db.tbl.Rows[0][3].ToString();
cbMonitorUpd_Computer.SelectedValue = db.tbl.Rows[0][4].ToString();
cbKeyboardUpd_Computer.SelectedValue = db.tbl.Rows[0][5].ToString();
cbSupplierUpd_Computer.SelectedValue = db.tbl.Rows[0][6].ToString();
cbCourseUpd_Computer.SelectedValue = db.tbl.Rows[0][7].ToString();
cbBranchUpd_Computer.SelectedValue = db.tbl.Rows[0][8].ToString();
消息框返回值 1。因此这意味着函数返回了行。但是,当我在消息框后按 OK 继续时,我收到此错误:
IndexOutOfRangeException No Row at position 0
我不知道为什么它在第二行而不是第一行显示错误,但我也尝试显示 [0][0] 值,但仍然返回并且位置 0 处没有行的错误,是否可能该行可能位于另一个位置?
【问题讨论】:
-
可以放一个
if(db.tbl.Rows.Count > 0 ){ //Do your stuff here. }条件并检查它是否进入了if