错误是发生在this.odbcAdapter.Fill(dataset,"Customers");这一句的

解决方案 »

  1.   

    this.odbcAdapter.SelectCommand=cmd;
    this.odbcAdapter.Fill(dataset,"Customers");
    改成
    this.odbcAdapter.DeleteCommand=cmd;
    this.odbcAdapter.Updata(dataset,"Customers");
    试试
      

  2.   

    呵呵!
    同意楼上的不过楼主的代码很奇怪这是显示的代码还是删除的?显示的话DataGrid还能有数据吗?
      

  3.   

    你没有加 TableMapping,调用this.odbcAdapter.Updata(dataset,"Customers");
    时,参数"Customers"指的是SourceTableName,而直接从数据库取出来的数据集是不带TableName的,缺省为"Table",所以,你在调用
    this.odbcAdapter.Updata(dataset,"Customers");
    之前,需要加上TableMapping:
    this.odbcAdapter.TableMappings.Add("Table","Customers");试一下。
      

  4.   

    会不会是你的connection又被关闭了呢?
    我觉得还是手工控制connection比较好
    gz
      

  5.   

    表名是Customers,因为前面有一句
    dataset.Tables[0].TableName="Customers";
    改成如下代码了
    int no=datagrid.CurrentRowIndex;
    string name=(string)dataset.Tables["Customers"].Rows[no][0];
    OdbcCommand cmd = new OdbcCommand("DELETE FROM Customers WHERE CustomerID=?",odbcConnection);
    cmd.Parameters.Add("@CustomerID", OdbcType.NChar, 5,"CustomerID");
    this.odbcAdapter.DeleteCommand=cmd;
    this.odbcAdapter.Update(dataset,"Customers");
    this.odbcAdapter.Fill(dataset,"Customers");
    现在已经可以执行了,跟踪代码的时候发现CustomerID已经被正确的取出来了,
    但是执行以后datagrid中的相关行没有被删掉,请大家继续指点,谢谢!
    。我刚刚接触这个东东,写的代码未免拙陋,让大家见笑了:)
      

  6.   

    删除一条记录后,应该重新绑定你的dataGrid