代码如下,执行后发现在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());
}
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());
}
解决方案 »
- COMBOX绑定问题。
- 如何根据条件决定是否显示自己的登录窗体?
- 求助自定义FolderBrowerDialog,SaveFileDialog,OpenFileDialog
- C# 实现链表取数据的问题
- 自己写的dll为何在Release模式下看不到命名空间?
- webBrowser使用问题
- 有做过论坛经验的人士快来看一下这个问题,算不到或许是你们经常碰见一个问题,欢迎前来指导!!
- 如何让richTextBox的内容自动滚动
- 一个关于输入法的问题
- 请问如何使用c#阻止一个程序运行多次?[急用]
- 请教:c#中处理oracle事务问题
- 帮忙解决一下:C#与javascript交互,出点小问题.谢谢! 在线等待中......
====>
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");
-----------------------------------------
你要具体表名:mySqlDataAdapter.Fill(ds.tables["表名"], "asset");
mySqlDataAdapter.Update(ds.tables["表名"], "asset");
testdataset.acceptchanges();
其结果也是在DATASET中更新了,但是重新运行代码后发现数据并没有更新到数据库中.GXY2005(不好!我看見豬在天上飛):
mySqlDataAdapter.Update(ds.tables["表名"], "asset");
系统提示有问题:
使用你的办法可以更新到数据库,但是不理解为什么使用DATASET控件时,DATASET能更新而数据库无法更新.
http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
SqlDataAdapter.update 是会自动搜索datatable所有datarow的rowstate如果有新加就insert
修改删除一样
还有设置好updatecommand之后如果command有参数,指定好参数影射,会自动把参数和datatable里的值对应
SqlCommand sqlcomm = new SqlCommand("update test set aa = @aa", sqlcon);
sqlcomm.Parameters.Add(new SqlParameter("@aa", "mm"));
sqlcomm.ExecuteNonQuery();
这样肯定可以改到数据库的.