【问题标题】:Cannot find table 0 in C#在 C# 中找不到表 0
【发布时间】:2014-03-01 21:56:20
【问题描述】:

使用 C# (Ado.net) 更新 Sql 表时出现以下异常

System.Data.dll 中出现“System.IndexOutOfRangeException”类型的未处理异常 附加信息:找不到表 0。

这是我的代码:

int x;
da.UpdateCommand = new SqlCommand("UPDATE ITEM_DETAILS SET ITEM_NAME=@ITEM_NAME,ITEM_DESCRIPTION=@ITEM_DESCRIPTION,VENDOR_NAME=@VENDOR_NAME,QUANTITY=@QUANTITY,RATE=@RATE,AMOUNT=@AMOUNT,INVOICE_NUM=@INVOICE_NUM,DATE=@DATE WHERE ITEM_MODEL=@ITEM_MODEL", con);
da.UpdateCommand.Parameters.Add("@ITEM_NAME", SqlDbType.VarChar).Value = txtItemName.Text;
da.UpdateCommand.Parameters.Add("@ITEM_DESCRIPTION", SqlDbType.VarChar).Value = txtItemDescription.Text;
da.UpdateCommand.Parameters.Add("@VENDOR_NAME", SqlDbType.VarChar).Value = txtVendor.Text;
da.UpdateCommand.Parameters.Add("@QUANTITY", SqlDbType.Int).Value = txtQuantity.Text;
da.UpdateCommand.Parameters.Add("@RATE", SqlDbType.Money).Value = txtRate.Text;
da.UpdateCommand.Parameters.Add("@AMOUNT", SqlDbType.Money).Value = txtAmount.Text;
da.UpdateCommand.Parameters.Add("@INVOICE_NUM", SqlDbType.Int).Value = txtInvoice.Text;
da.UpdateCommand.Parameters.Add("@DATE", SqlDbType.VarChar).Value = dateTimePicker1.Value;
da.UpdateCommand.Parameters.Add("@ITEM_MODEL", SqlDbType.VarChar).Value = ds.Tables[0].Rows[bs.Position][0];
con.Open();
x = da.UpdateCommand.ExecuteNonQuery();
con.Close();

if (x >= 1)
{
    MessageBox.Show("Record(s) has been updated");
}

谁能解释这个问题的解决方案?任何帮助都将是可观的

da.Fill(ds);
dg.DataSource = ds.Tables[0];
bs.DataSource = ds.Tables[0];

【问题讨论】:

  • 您的数据集中没有表ds。如果您想对此有更多了解,请分享ds 是如何被填满的。
  • 正如@Sachin 所说,我们需要查看更多围绕您的数据集的代码 - 您如何初始化它?
  • 数据集 ds = new Dataset();

标签: c# sql dataset


【解决方案1】:

da是什么意思?这是你的sql命令吗?如果是,那么尝试使用这个希望它有帮助

SqlDataAdapter sda = new SqlDataAdapter(sqlcommand);
Dataset ds = new DataSet();
sda.Fill(ds);
dg.DataSource = ds.Tables[0];
bs.DataSource = ds.Tables[0];

当我使用 MS SQL Server 时,我会做这样的事情

   sqlConnection.Open();
   sqlCommand.Connection = sqlConnection;
   sqlCommand.CommandType = CommandType.Text;
   sqlCommand.CommandText = "your SQL Statement";

   sqlCommand.Parameters.Add("@param1", SqlDbType.VarChar).Value = adparam[0];
   sqlCommand.Parameters.Add("@param2", SqlDbType.VarChar).Value = adparam[1];
   sqlCommand.Parameters.Add("@Param3", SqlDbType.VarChar).Value = adparam[2];
   sqlCommand.ExecuteNonQuery();

   SqlDataAdapter sda = new SqlDataAdapter(sqlcommand);
   Dataset ds = new DataSet();
   sda.Fill(ds);
   dg.DataSource = ds.Tables[0];
   bs.DataSource = ds.Tables[0]

【讨论】:

  • 您使用的是什么 dbms?
猜你喜欢
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 2015-07-21
相关资源
最近更新 更多