错误:找不到表0

时间:2014-02-01 08:04:16

标签: c# sql-server-2008

我看到有关cannot find table 0的错误,其中数据集不包含表数据。这是我从表中获取行的代码:

    DataTable dt = new DataTable();
    SqlConnection sqlconnection;
    sqlconnection = new SqlConnection(@"connectionstring");
    sqlconnection.Open();
    string sql = "Select (supplier_id,name) from supplier_info where supplier_id= '"+supplierid+"'";
    SqlCommand cmd = new SqlCommand(sql, sqlconnection);
    cmd.CommandType = CommandType.Text;
    SqlDataAdapter adpt = new SqlDataAdapter(cmd);
    DataSet dtset = new DataSet();
    adpt.Fill(dt);
    dt = dtset.Tables[0];
    DataRow dr;
    dr = dt.Rows[0];
    sqlconnection.Close();
    return dr;

业务逻辑代码:

  Cust_datalogic dc = new Cust_datalogic(); //datalogic class
  DataTable dt = new DataTable();
  DataRow dr;
  dr=dc.GetSupplierInfo(id);    //method 
  Supplier_BLL bc = new Supplier_BLL();  //business logic class
  bc.Ssup_ID = dr[0].ToString();
  bc.Ssup_name = dr[1].ToString();
  return bc;

1 个答案:

答案 0 :(得分:4)

您的代码中的问题区域是

adpt.Fill(dt);  //You are filling dataTable 
dt = dtset.Tables[0]; // You are assigning Table[0] which is null or empty 

将其更改为

adpt.Fill(dtset); //Fill Dataset
dt = dtset.Tables[0]; //Then assign table to dt

或者

您可以直接使用SqlDataAdapter来填充DataTable,因此不需要DataSet。

只需删除DataSet,使用

SqlDataAdapter adpt = new SqlDataAdapter(cmd);
adpt.Fill(dt);
DataRow dr = dt.Rows[0];