给数据库增加记录的问题
//连接数据库
string L_SqlString = "select * from Engineering where Engineering= ' " + L_Engineering + " ' ";
OleDbDataAdapter OleDbDr = new OleDbDataAdapter(L_SqlString ,DBConnection .OleDbConnSingle );
DataSet thisDataSet = new DataSet();
OleDbDr.Fill(thisDataSet, "gongcheng ");
//如果数据库没有记录,则增加
if (thisDataSet.Tables[ "gongcheng "].Rows.Count <= 0)
{
DataRow thisDataRow = thisDataSet.Tables[ "gongcheng "].NewRow();
thisDataRow[ "Engineering "] = L_Engineering;
thisDataRow[ "Remark "] = L_Remark;
thisDataSet.Tables[ "gongcheng "].Rows.Add(thisDataRow);
//到下边这步,程序就提示说:当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。
OleDbDr.Update(thisDataSet , "gongcheng ");
}
我这个程序是参照《c#入门经典》上来的。
------解决方案--------------------还有这样增加呀?如果判断为空则直接用insert 增加不是更好?
------解决方案--------------------使用UPDATE来自动生成SQLCOMMAND时,需要先建立CommandBuilder的实例
OleDbDataAdapter da = new OleDbDataAdapter;
OleDbCommandBuilder cb = new OleDbCommandBuilder(da)
------解决方案--------------------update不配合OleDbCommandBuilder也是可以用的
使用OleDbCommandBuilder的目的是为了自动生成sql语句,但有一个前提是数据表必须有主键且主键必须包含在返回的结果集中
否则只要自己指定了
da.InsertCommand.CommandText
da.DeleteCommand.CommandText
da.UpdateCommand.CommandText
一样可以运行update();
------解决方案--------------------在OleDbDr.Update(thisDataSet , "gongcheng ");
前加句:OleDbCommandBuilder ocb = new OleDbCommandBuilder(OleDbDr);
试试