在load函数里有如下相关语句 try { string chose01="SELECT * FROM stdu4user"; standchoseCommand = new OleDbCommand(chose01,oleDbConnection1); oleDbDataAdapter2 = new OleDbDataAdapter(standchoseCommand); standchoseCB2 = new OleDbCommandBuilder(oleDbDataAdapter2);
//Fill DataSet with data oleDbDataAdapter2.Fill(ds,"stdu4user"); DataTable stdu4user=ds.Tables["stdu4user"]; foreach(DataRow row in stdu4user.Rows) { this.listBox1.Items.Add(row["jieduan"]); } } catch(Exception ee) { Console.WriteLine("Error: Failed to retrieve the required data from the DataBase stdu4user(listbox is wrong).\n{0}", ee.Message); } 在我的保存按钮里有下面语句 DataTable stdu4user=ds.Tables["stdu4user"]; stdu4user.Rows[5]["钙"]=Convert.ToDecimal(5.00); try { oleDbDataAdapter2.Update(ds,"stdu4user"); } catch(Exception exale){Console.WriteLine(exale+"wrong!!!!!!!!!!!!!!!!!!!!!!!!!!!");} 我想先做个简单修改,所以给了具体的数值,结果发现还是不对,改不了外面的数据库
你的ds是怎样填充的,数据是从单表里取的吗?
将sql贴出来
try
{
string chose01="SELECT * FROM stdu4user";
standchoseCommand = new OleDbCommand(chose01,oleDbConnection1);
oleDbDataAdapter2 = new OleDbDataAdapter(standchoseCommand);
standchoseCB2 = new OleDbCommandBuilder(oleDbDataAdapter2);
//Fill DataSet with data
oleDbDataAdapter2.Fill(ds,"stdu4user"); DataTable stdu4user=ds.Tables["stdu4user"];
foreach(DataRow row in stdu4user.Rows)
{
this.listBox1.Items.Add(row["jieduan"]);
}
}
catch(Exception ee)
{
Console.WriteLine("Error: Failed to retrieve the required data from the DataBase stdu4user(listbox is wrong).\n{0}", ee.Message);
}
在我的保存按钮里有下面语句
DataTable stdu4user=ds.Tables["stdu4user"];
stdu4user.Rows[5]["钙"]=Convert.ToDecimal(5.00);
try
{
oleDbDataAdapter2.Update(ds,"stdu4user");
}
catch(Exception exale){Console.WriteLine(exale+"wrong!!!!!!!!!!!!!!!!!!!!!!!!!!!");}
我想先做个简单修改,所以给了具体的数值,结果发现还是不对,改不了外面的数据库
DataTable stdu4user=ds.Tables["stdu4user"];
datatable不要和DATASET中的表重名,不过估计不是这个原因。从错误提示来看,你的DATAADAPTER有可能有自动生成的,就是在窗体的代码中,展开所有的代码找UPDATE的语句,其中有一句,你以前改过但改错了。以上的全是猜测,不对的话,别骂我就成。
我把更新的代码给你贴出来 你看可以不
string connStr,updateCmd ;
connStr = "Provider = Microsoft.Jet.OLEDb.4.0 ; Data Source = Ginger547.mdb";
updataCmd = "update Ginger547 set id_person = '"+textBox1.text+""' ;
OleDbConnection conn ;
OleDbCommand cmd ;
conn = new OleDbConnection(connStr);
conn.Open();
cmd = new OleDbCommand(updateCmd,conn);
cmd.ExecuteNonQuery();
conn.Close();
还有就是我是用自动的好还是手动的好
{
//保存最后编号:
DataSet ds=new DataSet();
SqlDataAdapter dap=new SqlDataAdapter(); GetDb("Number",ref dap);//取数据--单独写的方法
dap.Fill ( ds ,"Number");
ds.Tables[0].Rows[0]["lastid"]=lastid; dap.Update(ds,"Number");//保存最后编号论--一个UPDATE够了
}
最好不要用CommandBuiler,性能很差,可以使用生成工具生成命令。