代码的前面我已经配置和连接数据库
都没有问题,
(包括变量:SqlConnection Conn;和 SqlDataAdapter Adapter;)

解决方案 »

  1.   

    我在原方法的代码最后添加:
      Adapter.Update(ds,"生产合同");
    但是,调试时提示出错:
    “传递有新行的DataRow集合时系统要求有效的[插入命令]”
    请问这样,该怎样解决呢?
      

  2.   

    你只是把记录加到DataSet里,还没有加入数据库!
    加上这一句
    Adapter。Update(ds);
      

  3.   

    多查查MSDN里面有很多的例子!
      

  4.   

    DataSet ds=new DataSet();
    OleDbConnection Conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source=db1.mdb;");
    OleDbDataAdapter Adapter = new OleDbDataAdapter("SELECT * FROM SN",Conn);
    OleDbCommandBuilder cb=new OleDbCommandBuilder(Adapter);//你所缺少的!
    try
    {
    Conn.Open();
    Adapter.Fill(ds,"sn");
    DataRow row = ds.Tables["sn"].NewRow();
    //row["编号"] = 编号;
    row["sn"] = "asfad";
    ds.Tables["sn"].Rows.Add(row);
    Adapter.Update(ds,"sn");
    MessageBox.Show("OOKK!!");
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    finally
    {Conn.Close();}
      

  5.   

    问题搞定了!
    但是我还有一点不明白,为什么要添加
    OleDbCommandBuilder cb=new OleDbCommandBuilder(Adapter);//这一句呢?
    我发觉提交数据时并没有调用cb变量啊!
    这是什么的道理呢?
      

  6.   

    OleDbDataAdapter 不会自动生成为了使对 DataSet 所作的更改和相关联的数据源协调起来所必须的 SQL 语句。但是,如果设置了 OleDbDataAdapter 的 SelectCommand 属性,那么就可以创建 OleDbCommandBuilder 对象,来自动生成 SQL 语句以更新单表。然后,OleDbCommandBuilder 将生成其他任何未设置的 SQL 语句。每当设置了 DataAdapter 属性,OleDbCommandBuilder 就将其本身注册为 RowUpdating 事件的侦听器。一次只能将一个 OleDbDataAdapter 与一个 OleDbCommandBuilder 对象(或相反)互相关联。为了生成 INSERT、UPDATE 或 DELETE 语句,OleDbCommandBuilder 会自动使用 SelectCommand 属性来检索所需的元数据集。如果在检索元数据后(例如在第一次更新后)更改 SelectCommand,则应调用 RefreshSchema 方法来更新元数据。OleDbCommandBuilder 还使用由 SelectCommand 引用的 Connection、CommandTimeout 和 Transaction 属性。如果修改了任何这些属性或者替换了 SelectCommand 本身,用户则应调用 RefreshSchema。否则,InsertCommand、UpdateCommand 和 DeleteCommand 属性都保留它们以前的值。如果调用 Dispose,则会解除 OleDbCommandBuilder 与 OleDbDataAdapter 的关联,并且不再使用所生成的命令。
      

  7.   

    我刚从Delphi板块过来。
    以后,还“小猪”多多指点阿!