如何克服错误

本文关键字:错误 克服 何克服 | 更新日期: 2023-09-27 17:56:50

我正在添加,编辑删除模块...为此,我在 c# 中有以下代码,

private void listOfCompany_Load(object sender, EventArgs e)
    {
        //MessageBox.Show(updID.ToString());
        con.ConnectionString = @"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:''Documents and Settings''mayur patil''My Documents''Dairy_db''tblCompany_1.mdb";
        con.Open();
        OleDbDataAdapter da = new OleDbDataAdapter();
        DataSet ds = new DataSet();
        string sql = "SELECT * From tblCompany_1 WHERE ID="+updID;
        da = new System.Data.OleDb.OleDbDataAdapter(sql, con);
        da.Fill(ds);
       // dataGridView1.DataSource = ds.Tables[0];
        DataRow dr = ds.Tables[0].Rows.Count;
        textBox1.Text = dr.ItemArray.GetValue(0).ToString();
        textBox4.Text = dr.ItemArray.GetValue(2).ToString();
       /* int t = ds.Tables[0].Columns.Count;
        for (int i = 0; i < cnt; i++)
        {
            dataGridView1.Rows[i].Cells[0].Value = dr.ItemArray.GetValue(0).ToString();
            dataGridView1.Rows[i].Cells[1].Value = dr.ItemArray.GetValue(1).ToString();
            dataGridView1.Rows[i].Cells[2].Value = dr.ItemArray.GetValue(2).ToString();
        }*/

    }

当我调试应用程序时,然后在添加,编辑和删除按钮上,它在"DataRow dr = ds"处出现错误。表格[0]。行[0];",表示"已处理 IndexOutOf RangeException",错误为"位置 0 处没有行"。...我应该如何克服这个问题?

如何克服错误

这表明没有该ID的记录。在继续并尝试使用它之前,您应该检查一下。您可以使用ds.Tables[0].Rows.Count来了解返回了多少行。

您还应该开始使用参数化查询,而不是直接在正在构建的 SQL 语句中包含值,以避免 SQL 注入攻击。如果 ID 是整数,那么这里可能不是问题,但通常参数化的 SQL 查询是前进的方向。

怎么样:

DataRow dr;
for(int i = 0; i<ds.Tables.Count; i++){
  for(int j = 0; j<ds.Tables[i].Rows.Count; j++){
    dr = ds.Tables[i].Rows[j];
    //Do something with dr.
  }
}

注意:它可能是"长度"而不是"计数"。现在不记得了:p