你的datagridview绑定的数据源需要实现了添加,删除,编辑相应的SQL语句才行。如果只用了DataSet绑定,而没有通过数据适配器绑定就无法自动实现,必须手动做。
要注意SQL Server和Access的T-SQL语法是有不同的,要分情况。
Builder自动生的sql中,所有你传的变量在 Builder 的 updateText属性 中都是问号的。
MeDataSet1Tables(0)AcceptChanges()时,更新不进去,可能有三种原因有的列名是sql关键字:
1、MeOleDbDataAdapter1的问题,获得数据源的适合器和更新数据的适配器不是同一个。此种情况的解决方法是:取数据、更新数据都用同一个OleDbDataAdapter
2、更新数据库时,更新的列名是数据库关键字,比如你的数据库有一个叫User的列名,如果要更新User这个字段的时候,就会报异常。此种情况的解决方法是:初使化Builder时加如下两句
theBuilderQuotePrefix = "[";
theBuilderQuoteSuffix = "]";
3、更新的数据类型和数据库中对应列的类型不匹配,比如你要更新的列为 [User],它的类型为int,但是你要更新的数据是string类型赋过去的,就会报异常了,此种情况解决方法是:将类型统一
补充:你可以试着断点看看更新之前更新的数据源有没有相对更新
我以前也遇到过这个问题~非常的郁闷~
不过也确实不用在这一棵树上吊死~~
可以直接用拼SQL字符串的方法来实现~
我帮你改了一下!!
string content = RequestForm["content1"]ToString();//用来接收文本编辑器提交的文本(包括其格式)
string b = RequestForm["txtUserName"]ToString();//用来接收提交过来的编号
string dbpath2 = SystemConfigurationConfigurationSettingsAppSettings["dbpath"];
OleDbConnection conn2 = new OleDbConnection("Provider=MicrosoftjetOLEDB40;Data source=" + ServerMapPath(dbpath2));
conn2Open();
string str =stringFormat("update xianlu set richengshisu='{0}' where bianhao={1}",content,b); //用 format 方法拼接字符串
ResponseWrite(str);
OleDbCommand cmd1 = new OleDbCommand();
cmd1CommandText = str;
cmd1Connection = conn2;
try
{
int i=cmd1ExecuteNonQuery();
ResponseWrite("<br>" + str);
ResponseWrite("<script>alert('添加成功!');</script>");
ResponseWrite("<script>locationreplace('/xianluaspx');</script>");
}
catch (OleDbException ex)
{
ResponseWrite("添加失败!" + exMessage);
}
conn2Close();
cmd1ConnectionClose();
cmd1Dispose();
以上就是关于update未能更新数据库全部的内容,包括:update未能更新数据库、OleDbDataAdapter 的update方法无法更新数据库,插入的时候没有问题,更新的时候也不报错,方法如下:、带参数的UPDATE语句无法更新数据库问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)