代码如下,执行后发现在DATASET中修改成功,但是重新运行代码后发现数据仍没修改。            string assetid = TB资产编号.Text.Trim();
            string connstr = "";
            connstr = config.ReadSetting("main");
            SqlConnection mysqlconn = new SqlConnection(connstr);
            mysqlconn.Open();
            SqlCommand mysqlcomm = mysqlconn.CreateCommand();
            mysqlcomm.CommandText = "select * from asset where 资产编号 = '" + assetid + "'";
            SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
            mySqlDataAdapter.SelectCommand = mysqlcomm;
            mysqlcomm = new SqlCommand("update asset set 领用单位号 = @unitid," +
               "分类号 = @typeid,资产名称 = @assetname,型号 = @type,规格 = @spec," +
      "单价 = @price,国别 = @country,国别码 = @countryid,生产厂家 = @manufacturer" +
      "出厂日期 = @producedate,购置日期 = @purchaseddate," +
      "领用人 = @man1,经手人 = @man2,责任人 = @man3,单据号 = @billid," +
      "所属部门 = @branch,备注 = @re" +
      "where 资产编号 = @oldassetid", mysqlconn);
      mysqlcomm.Parameters.Add(new SqlParameter("@unitid",TB领用单位号.Text.Trim()));           
            mysqlcomm.Parameters.Add(new SqlParameter("@typeid",TB分类号.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@assetname", TB资产名称.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@type",TB型号.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@spec",TB规格.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@price",TB单价.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@country",TB国别.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@countryid",TB国别码.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@manufacturer",TB生产厂家.Text.Trim()));            
            mysqlcomm.Parameters.Add(new SqlParameter("@producedate",TB出厂日期.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@purchaseddate",TB购置日期.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@man1",TB领用人.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@man2",TB经手人.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@man3", TB责任人.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@billid", TB单据号.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@branch",TB所属部门.Text.Trim()));
            mysqlcomm.Parameters.Add(new SqlParameter("@oldassetid", TB资产编号.Text.Trim()));             mySqlDataAdapter.UpdateCommand = mysqlcomm;
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            
            mySqlDataAdapter.Fill(ds, "asset");
            try
            {
                mySqlDataAdapter.Update(ds,"asset");
                testDataSet.AcceptChanges();
                MessageBox.Show("Update successful");
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }

解决方案 »

  1.   

    mysqlcomm.Parameters.Add(new SqlParameter("@unitid",TB领用单位号.Text.Trim()));           
    ====>
     mysqlcomm.Parameters.Add(new SqlParameter("@unitid",SqlDbType.XXXX , 参数长度 , 具体数据库表的列名));
    其他参数类同           
    还有
    mySqlDataAdapter.Update(ds,"asset");
    testDataSet.AcceptChanges();
    MessageBox.Show("Update successful");
    ====>
    mySqlDataAdapter.Fill(ds, "asset");
    ds.Tables["asset"].Rows[0]["列名"] = "参数值"
    mySqlDataAdapter.Update(ds,"asset");
    MessageBox.Show("Update successful");
      

  2.   

    mySqlDataAdapter.Fill(ds, "asset");
    -----------------------------------------
    你要具体表名:mySqlDataAdapter.Fill(ds.tables["表名"], "asset");
      

  3.   

    搞错了:
      mySqlDataAdapter.Update(ds.tables["表名"], "asset");
      

  4.   

    我之前用DATASET控件生成的BINDINGSOURCE直接绑定TEXTBOX和DATAGRIDVIEW等控件,后来用assetTableAdapter1.update(testdataset);
    testdataset.acceptchanges();
    其结果也是在DATASET中更新了,但是重新运行代码后发现数据并没有更新到数据库中.GXY2005(不好!我看見豬在天上飛):
    mySqlDataAdapter.Update(ds.tables["表名"], "asset");
    系统提示有问题:
      

  5.   

    hdt(倦怠):
    使用你的办法可以更新到数据库,但是不理解为什么使用DATASET控件时,DATASET能更新而数据库无法更新.
      

  6.   

    try
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
      

  7.   

    这个跟SqlDataAdapter的机制有关
    SqlDataAdapter.update 是会自动搜索datatable所有datarow的rowstate如果有新加就insert
    修改删除一样
    还有设置好updatecommand之后如果command有参数,指定好参数影射,会自动把参数和datatable里的值对应
      

  8.   

    就是说如果我用系统的DATASET控件绑定其它控件后,还需要给出UPDATECOMMAND和INSERTCOMMAND?
      

  9.   

    可以用SqlCommandBuilder 自动来做
      

  10.   

    我觉得对数据库更新的时候,根本不用去用sqldataAdapter或者DataSet,直接用
    SqlCommand sqlcomm = new SqlCommand("update test set aa = @aa", sqlcon);
    sqlcomm.Parameters.Add(new SqlParameter("@aa", "mm"));
    sqlcomm.ExecuteNonQuery(); 
    这样肯定可以改到数据库的.