OleDbDataAdapter.update问题
在使用OleDbDataAdapter.update时候出现了一些问题,向各位大侠求助!
问题描述:对数据库进行修改或添加,当表中没有记录时,添加一行;当表中有记录时候,将第一行记录数据修改.问题出现在当表中已有记录时候,提醒OleDbDataAdapter.update出错,出错信息为"对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。"
涉及代码如下,请高手指教!
private void button1_Click(object sender, EventArgs e)
{
if (ProNameTxt.Text == "" || comboBox1.Text == "") MessageBox.Show("请输入完整信息!");
else
{
string strCon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\work\temp.mdb";
OleDbConnection myConn = new OleDbConnection(strCon);
DataSet myDataSet = new DataSet();
string strCom = "SELECT * FROM 工程系统参数表";
OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strCom, myConn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(MyAdapter);
myConn.Open();
MyAdapter.Fill(myDataSet, "项目基本信息表");
if (myDataSet.Tables["项目基本信息表"].Rows.Count >0)
{
myDataSet.Tables["项目基本信息表"].Rows[0][0] = ProNameTxt.Text;
myDataSet.Tables["项目基本信息表"].Rows[0][1] = comboBox1.Text;
myDataSet.Tables["项目基本信息表"].Rows[0][2] = Convert.ToDouble(textBox1.Text) / 100;
MessageBox.Show(myDataSet.Tables["项目基本信息表"].Rows[0][0].ToString());
}
else
{
DataRow mydatarow = myDataSet.Tables["项目基本信息表"].NewRow();
mydatarow[0] = ProNameTxt.Text;
mydatarow[1] = comboBox1.Text;
mydatarow[2] = Convert.ToDouble(textBox1.Text) / 100;
myDataSet.Tables["项目基本信息表"].Rows.Add(mydatarow);
}
MyAdapter.Update(myDataSet,"项目基本信息表"); //出错行
myConn.Close();
}
}
------解决方案--------------------数据库需要建主键
------解决方案--------------------\work\temp.mdb 中的 工程系统参数表 没有设置主键