日期:2014-05-20  浏览次数:20781 次

数据库更新的简单问题?
OleDbDataAdapter   custDA   =   new   OleDbDataAdapter( "SELECT   客户ID,   公司名称   FROM   客户 ",   nwindConn);
 
custDA.UpdateCommand   =   new   OleDbCommand( "UPDATE   客户   SET   公司名称   =   ?   WHERE   客户ID   =   ? ",nwindConn);

custDA.UpdateCommand.Parameters.Add( "@ConpanyName ",   OleDbType.Char,   15).Value   =   "   旧公司 ";

custDA.UpdateCommand.Parameters.Add( "@CustomerID ",   OleDbType.Char,   5, "客户ID ").Value   =   "ALFKI ";
                       
DataSet   custDS   =   new   DataSet();
custDA.Fill(custDS,   "客户 ");

custDS.Tables[ "客户 "].Rows[0][ "公司名称 "]   =   "第一公司 ";
custDS.Tables[ "客户 "].Rows[1][ "公司名称 "]   =   "第二公司 ";

custDA.Update(custDS,   "客户 ");

上面的语句执行后,数据库中的第一行和第二行显示的都是 '旧公司 '。这是为什么啊?

------解决方案--------------------
this.oleDbUpdateCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter( "CustomerID ", System.Data.OleDb.OleDbType.VarWChar, 5, "CustomerID "));
把你的 "旧公司 "去掉
------解决方案--------------------
try..

OleDbDataAdapter custDA = new OleDbDataAdapter( "SELECT 客户ID, 公司名称 FROM 客户 ", nwindConn);
OleDbCommandBuilder builder=new OleDbCommandBuilder(custDA);

DataSet custDS = new DataSet();
custDA.Fill(custDS, "客户 ");

custDS.Tables[ "客户 "].Rows[0][ "公司名称 "] = "第一公司 ";
custDS.Tables[ "客户 "].Rows[1][ "公司名称 "] = "第二公司 ";

custDA.Update(custDS, "客户 ");

注意这样要求你的数据库中的表要有主键....

------解决方案--------------------
你这样用肯定有问题啊...

你的Adapter的updateCommand与后面对datatable的更改都不对应...


------解决方案--------------------
数据库中要设置主键
另外参数中应加入主键的参数