十有八九是没用使用commandbuilder

解决方案 »

  1.   


     你的ds是怎样填充的,数据是从单表里取的吗?
     将sql贴出来
      

  2.   

    在load函数里有如下相关语句
    try
    {
    string chose01="SELECT * FROM stdu4user";
    standchoseCommand = new OleDbCommand(chose01,oleDbConnection1);
    oleDbDataAdapter2 = new OleDbDataAdapter(standchoseCommand);
    standchoseCB2 = new OleDbCommandBuilder(oleDbDataAdapter2);

    //Fill DataSet with data
    oleDbDataAdapter2.Fill(ds,"stdu4user"); DataTable stdu4user=ds.Tables["stdu4user"];
    foreach(DataRow row in stdu4user.Rows)
    {
    this.listBox1.Items.Add(row["jieduan"]);
    }
    }
    catch(Exception ee)
    {
    Console.WriteLine("Error: Failed to retrieve the required data from the DataBase stdu4user(listbox is wrong).\n{0}", ee.Message);
    }
    在我的保存按钮里有下面语句
    DataTable stdu4user=ds.Tables["stdu4user"];
    stdu4user.Rows[5]["钙"]=Convert.ToDecimal(5.00);
    try
    {
    oleDbDataAdapter2.Update(ds,"stdu4user");
    }
    catch(Exception exale){Console.WriteLine(exale+"wrong!!!!!!!!!!!!!!!!!!!!!!!!!!!");}
    我想先做个简单修改,所以给了具体的数值,结果发现还是不对,改不了外面的数据库
      

  3.   

    看不太懂,先改下这个
    DataTable stdu4user=ds.Tables["stdu4user"];
    datatable不要和DATASET中的表重名,不过估计不是这个原因。从错误提示来看,你的DATAADAPTER有可能有自动生成的,就是在窗体的代码中,展开所有的代码找UPDATE的语句,其中有一句,你以前改过但改错了。以上的全是猜测,不对的话,别骂我就成。
      

  4.   

    我不知道我理解的对不对 你现在要做的是对数据库的更新
    我把更新的代码给你贴出来 你看可以不
    string connStr,updateCmd ;
    connStr = "Provider = Microsoft.Jet.OLEDb.4.0 ; Data Source = Ginger547.mdb";
    updataCmd = "update Ginger547 set id_person = '"+textBox1.text+""' ;
    OleDbConnection conn ;
    OleDbCommand cmd ;
    conn = new OleDbConnection(connStr);
    conn.Open();
    cmd = new OleDbCommand(updateCmd,conn);
    cmd.ExecuteNonQuery();
    conn.Close();
      

  5.   

    我的dataadapter确实是自动生成的,我不知道用不用在手动用commandbuilder再构造一个
    还有就是我是用自动的好还是手动的好
      

  6.   

    我找到错误了,这个表有64列,我只用到了其中两列,表不是我定义的,可能有些列有问题吧,我修改了select只写出了那两列,结果就可以改了,看来一个不能求全,要细致些
      

  7.   

    把你的SQL语句先在查询分析器里调试通过
      

  8.   

    public static void UpdateLastID(string lastid)
    {
                     //保存最后编号:
    DataSet ds=new DataSet();
    SqlDataAdapter dap=new SqlDataAdapter(); GetDb("Number",ref dap);//取数据--单独写的方法
    dap.Fill ( ds ,"Number");
    ds.Tables[0].Rows[0]["lastid"]=lastid;            dap.Update(ds,"Number");//保存最后编号论--一个UPDATE够了
    }
      

  9.   

    一点建议:字段名最好不要用中文
    最好不要用CommandBuiler,性能很差,可以使用生成工具生成命令。