SqlConnection myCon = new SqlConnection();
myCon.ConnectionString = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=PNorthwind;Data Source=MyComputer";
myCon.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommand selectCmd = new SqlCommand();
selectCmd.Connection = myCon;
selectCmd.CommandText = "SELECT * FROM 客户"; //客户表的“客户ID”字段为主关键字
adapter.SelectCommand = selectCmd;
DataSet dataSet = new DataSet("客户");
adapter.Fill(dataSet);
//更新
SqlCommand updateCmd = new SqlCommand();
updateCmd.Connection = myCon;
updateCmd.CommandText = "UPDATE 客户 SET 公司名称='肯德基' where 客户ID='ALFKI'";
adapter.UpdateCommand = updateCmd; adapter.Update(dataSet);
dataSet.AcceptChanges();
//updateCmd.ExecuteNonQuery();//改成这条语句则可以更新急死了,花费了我整整一天了,都没有搞定!
myCon.ConnectionString = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=PNorthwind;Data Source=MyComputer";
myCon.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommand selectCmd = new SqlCommand();
selectCmd.Connection = myCon;
selectCmd.CommandText = "SELECT * FROM 客户"; //客户表的“客户ID”字段为主关键字
adapter.SelectCommand = selectCmd;
DataSet dataSet = new DataSet("客户");
adapter.Fill(dataSet);
//更新
SqlCommand updateCmd = new SqlCommand();
updateCmd.Connection = myCon;
updateCmd.CommandText = "UPDATE 客户 SET 公司名称='肯德基' where 客户ID='ALFKI'";
adapter.UpdateCommand = updateCmd; adapter.Update(dataSet);
dataSet.AcceptChanges();
//updateCmd.ExecuteNonQuery();//改成这条语句则可以更新急死了,花费了我整整一天了,都没有搞定!
解决方案 »
- 怎么去搭建图片服务器
- 求教ESTJS 知识!(特急)
- 论坛的查看帖子和回复怎么做的啊?
- 如何在GrideView控件中自定义分页功能?
- 有哪个高手能把http://wwwapps.ups.com/WebTracking/processRequest网址的数据拿出来
- B/S下的报表打印问题??帮帮我
- 谁有asp。net+xml的 电子书籍!
- .net 关于填充dataset的问题
- gridview 导出excel文件,下载下来是aspx文件
- 怎样让asp.net的web控件现出来 ?运行哪一个程序?
- 程序里面有个地方要计算人员工资,数据可能有上万条,需要用时时的进度条给客户提示,问该怎么实现进度条.
- Forms验证,验证后进不去~~~Why
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
更新后再重新綁定
应该传个表名吧.
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(queryString, connection);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter); connection.Open(); DataSet dataSet = new DataSet();
adapter.Fill(dataSet, tableName); //code to modify data in DataSet here //Without the SqlCommandBuilder this line would fail
adapter.Update(dataSet, tableName); return dataSet;
}详细内容参见msdn
adapter.Fill(dataSet, "tableName"); //code to modify data in DataSet here //Without the SqlCommandBuilder this line would fail
adapter.Update(dataSet, "tableName");
dataSet.AcceptChanges();
==>
dataSet.AcceptChanges();
adapter.Update(dataSet);
adapter.Update(dataSet);
if(dataSet.HasErrors)
{
dataSet.Tables[0].GetErrors()[0].ClearErrors();
return false;
}
else
{
dataSet.AcceptChanges();
return true;
}
你概念不清,更新数据库有两种方法。
1.通过CMD命令,连接数据库,并更新数据库
2.通过DATAADAPTOR这个桥梁,首次连接,将数据FILL到DATASET中,最后断开连接,所需数据存储在DATASET中,执行DATASET操作,然后通过adapter.Update(dataSet)提交到数据库中。
就你的程序而言,你的DATAADAPTOR填充到DATASET的是老数据,你提交的就是老数据,何谈更新???
建议楼主仔细看看DATAADAPTOR与DATASET数据操作章节,先把流程看懂,DATASET使用上很有灵活性,比如执行增删改操作,不要频繁地与数据库交互连接,而且还有撤销更新的许多种灵活方法,最后通过DATAADAPTOR更新,提交更新数据库。
DATASET的DATAVIEW视图还可以进行过滤,筛选等功能...
其中的“客户”,是内存表DataTable的表名,完全可以随便取一个,如:
DataSet dataSet = new DataSet("KH"); 但很多书上例子往往取得与实表同名,结果让人产生混淆。2、 updateCmd.CommandText = "UPDATE 客户 SET 公司名称='肯德基' where 客户ID='ALFKI'";其中的表名:"客户",究竟是内存表的表名还是数据库中实表的表名?答案是:实表,因为内存表是无法用
Update-SQL命令去更新的,只能用赋值的办法逐个字段、逐个记录去更改。3、 adapter.Update(dataSet);是当数据集dataSet中的数据有了变动之后,才会将此变动存回到数据库的实表中,否则不会进行任何操作。
4、如果将DataSet dataSet = new DataSet("客户"); 改成
DataSet dataSet = new DataSet("KH");
则语句:
updateCmd.CommandText = "UPDATE KH SET 公司名称='肯德基' where 客户ID='ALFKI'";
编译时也不会产生什么错误(因为是在字符串中)但运行到updateCmd.ExecuteNonQuery();时就出出错!因为updateCmd.ExecuteNonQuery()语句只能对实表进行更新!