OleDbDataAdapter MyDa=new OleDbDataAdapter (SqlString,MyConn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(MyDa);
......if it still does not work, write outcb.GetInsertCommand().CommandTextand try to run it manually
OleDbCommandBuilder cb = new OleDbCommandBuilder(MyDa);
......if it still does not work, write outcb.GetInsertCommand().CommandTextand try to run it manually
解决方案 »
- byte [] 和Byte [] 有什么区别?
- C# WinForm中,下拉框,时间选择框,都能超出最顶层窗口的边界。我想用DataGrid加TextBox做一个类似下拉框的东西,却被限制在窗口里面,请问是什么原因?
- 关于绑定的问题,就20分了
- 在发送短信时出现:+CMS ERROR: 50 通常表示出了什么问题?
- gridView的问题
- 如何获取DataGrid的行数
- 关于线程lock()的使用
- 以最小体积发布的问题
- 解决方案的问题
- 江湖救急—关于网络信息的获取?欢迎进贴看看,交个朋友,哥哥不限,姐姐也不限!
- 关于把一个字符串作为组件名称转换为相应组件类型的问题(在线)
- 小问题:ImageComboCtl与ImageList怎样结合?
我把源码整理一下,应该是这样:
string MyConnString="Provider=Microsoft.Jet.OleDb.4.0.;Data Source=F:\\TestDS.mdb";
OleDbConnection MyConn=new OleDbConnection (MyConnString);
MyConn.Open ();
string SqlString="Select MyName,MyAge,MySex from MyCon";OleDbDataAdapter MyDa=new OleDbDataAdapter (SqlString,MyConn);DataSet MyDs=new DataSet ();MyDa.Fill(MyDs,"MyCon");DataRow MyDr=MyDs.Tables ["MyCon"].NewRow ();
MyDr["MyName"]="奇怪哦!";
MyDr["MyAge"]="24Y";
MyDr["MySex"]="男";
MyDs.Tables["MyCon"].Rows.Add (MyDr);
MyDs.Tables ["MyCon"].AcceptChanges ();
MyDs.AcceptChanges ();
MyDa.Update (MyDs,"MyCon");
MyConn.Close ();运行可以,可是没法添加数据。
当AcceptChange被调用有,所有的改变的标记都消失了,update就认为没有数据被改变,就不向数据库提交数据了.而且你还缺少这样一句
OleDbCommandBuilder MyCB = new OleDbCommandBuilder(MyDa);以下程序可以正确运行
string MyConnString="Provider=Microsoft.Jet.OleDb.4.0.;Data Source=F:\\TestDS.mdb";
OleDbConnection MyConn=new OleDbConnection (MyConnString);
MyConn.Open ();
string SqlString="Select MyName,MyAge,MySex from MyCon"; OleDbDataAdapter MyDa=new OleDbDataAdapter (SqlString,MyConn);
DataSet MyDs=new DataSet (); OleDbCommandBuilder MyCB = new OleDbCommandBuilder(MyDa);
MyDa.Fill(MyDs,"MyCon");
DataRow MyDr;
MyDr=MyDs.Tables["MyCon"].NewRow ();
MyDr["MyName"]="奇怪哦!";
MyDr["MyAge"]="24Y";
MyDr["MySex"]="男";
MyDs.Tables[0].Rows.Add (MyDr);
MyDa.Update (MyDs,"MyCon");
MyDs.AcceptChanges ();
MyConn.Close ();
OleDbCommandBuilder MyCB = new OleDbCommandBuilder(MyDa);这一句有什么用??而且在程序的后段都没有用到MyCb??
我就是在MSDN里看到这么一句话,就是在Add()之后,调用相应的表的AcceptChanges()。所以,我就先用AcceptChanges。还有,先用AcceptChanges(),数据提交到什么地方去了??