你的datagridview绑定的数据源需要实现了添加,删除,编辑相应的SQL语句才行。如果只用了DataSet绑定,而没有通过数据适配器绑定就无法自动实现,必须手动做。
要注意SQL Server和Access的T-SQL语法是有不同的,要分情况。
需要声明使用CommandBuilder对象,你是 SQL 数据库还是 ACCESS 数据库,这两者的对象不一样的。
对于:SQL server
Dim Mybuilder As SqlCommandBuilder = New SqlCommandBuilder(da)
daUpdate(dt) '使用Update方法实现更新到数据库
对于:ACCESS
Dim Mybuilder As OleDbCommandBuilder = New OleDbCommandBuilder(da)
daUpdate(dt) '使用Update方法实现更新到数据库
private void 保存修改结果ToolStripMenuItem_Click(object sender, EventArgs e) { dataGridView1EndEdit(); adapterUpdate(tablegetchanges());//修改这句 MessageBoxShow("修改后的数据已经成功保存到数据库中","数据保存"); }
造成这种情况的根本原因是你的数据库表结构设计的不合理,有问题。
建议重新设计表结构。
就算你可以用一些偏门方法解决该问题,还是会留下很多隐患。
比如,新增的时候、删除的时候,都会碰到类似问题。极有可能造成数据不完整。
Update语句用于修改表中的数据。用于更新修改指定记录的数据,语法:
UPDATE表名称SET列名称=新值WHERE列名称=某值
对符合条件的记录,更新修改指定字段的值。若没有WHERE条件限定,则对所有记录进行更新修改。
void Button2_Click(object sender, EventArgs e)
{
string city = TextBox4TextTrim()Replace(",", "");
if (city == "") { ResponseWrite("<script>alert('city is not null ');</script>"); return; }
string strconnect;
strconnect = "Provider=microsoftjetoledb40;";
strconnect += "data source=" + MapPath("uktripmdb");
strconnect += ";persist security info=false";
OleDbConnection DBconnection = new OleDbConnection(strconnect);
string sql = "";
sql = " SELECT COUNT() FROM hotels WHERE hot_city='" + city + "' ";
OleDbCommand DBcommand = new OleDbCommand();
DBcommandCommandText = sql;
DBcommandConnection = DBconnection;
DBconnectionOpen();
int count = ConvertToInt32(DBcommandExecuteScalar());
if (count == 0) { ResponseWrite("<script>alert('city is null ');</script>"); return; }
DBconnectionClose();
sql = "update hotels set hot_city=@hot_city'" + TextBox4Text + "', hot_name=@hot_name'" + TextBox2Text + "' , hot_star=@hot_star'" + TextBox2Text + "', hot_link=@hot_link'" + TextBox4Text + "' WHERE hot_city=@hot_city ";
OleDbParameter[] parm = {new OleDbParameter("@hot_city",city) };
DBcommandCommandText = sql;
DBcommandConnection = DBconnection;
DBconnectionOpen();
DBcommandExecuteNonQuery();
DBconnectionClose();
}
//写了半天也没搞明白你具体想干嘛~~~
可以用ADO方法
rsCnn = "PROVIDER=MicrosoftJetOLEDB40;Data Source=" & DataPath & ";mode=Read|write"
rsTmpOpen "Select From 时刻段电量 ", rsCnn, adOpenDynamic, adLockBatchOptimistic
With rsTmp
!峰数据 = rsTmp1Fields(strName(k) & "峰")Value
!平数据 = rsTmp1Fields(strName(k) & "平")Value
!谷数据 = rsTmp1Fields(strName(k) & "谷")Value
!总数据 = !峰数据 + !平数据 + !谷数据
UpdateBatch
End With
Set rsTmp = Nothing
<%
'连接数据库 dbmdb是您的数据库文件
Set conn = ServerCreateObject("ADODBConnection")
connstr="Provider=MicrosoftJetOLEDB40;Data Source=" & ServerMapPath("dbmdb")
connopen connstr
'执行语句
connexecute "update [表名] set [列名]=值 where [id]=编号"
%>
如下面一个数据库
数据库文件名 123mdb
表名 userinfo
数据/列名 id username password
0 lorabit PiG!!!
1 paint DoG!!!
当paint用户需要更新其密码为PiG!!!时,我们就需要这样一段ASP
<%
'连接数据库 dbmdb是您的数据库文件
Set conn = ServerCreateObject("ADODBConnection")
connstr="Provider=MicrosoftJetOLEDB40;Data Source=" & ServerMapPath("123mdb")
connopen connstr
'执行语句
connexecute "update [userinfo] set [password]='PiG!!!' where [id]=1"
%>
你也可以使用下面这一段,两段的差别在于第一段是靠用户ID来确定行,而第二段是搜索用户名。
<%
'连接数据库 dbmdb是您的数据库文件
Set conn = ServerCreateObject("ADODBConnection")
connstr="Provider=MicrosoftJetOLEDB40;Data Source=" & ServerMapPath("123mdb")
connopen connstr
'执行语句
connexecute "update [userinfo] set [password]='PiG!!!' where [username]='paint'"
%>
如果还有不懂 QQ233349789
以上就是关于c# adapter.Update无法将数据更新进数据库全部的内容,包括:c# adapter.Update无法将数据更新进数据库、VB.NET,将数据从dataset中删除了,如何更新到数据库、adapter.update(table);为什么不能更新数据到数据库,代码如下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)