我有一个包含多个表的数据库,每个表都链接到另一个。(关系数据库)我想将记录从我的数据集插入数据库。首先我尝试使用OledbCommandBuilder但是没有用,我发现它无法用于关系数据库。我没有链接我的数据集中的表,它们只链接在数据库中。我所拥有的是一个名为“Commit”的按钮。当我按下该按钮时,我希望我的dataset.datatable中的所有修改都反映在相应的数据库表中。我只知道如何一次INSERT,UPDATE,DELETE单个记录,但这也是一项冗长的任务,因为我必须首先执行此操作。
保存按钮中的代码
DataRow dRow = bookDS.Tables["Book"].NewRow();
dRow[0] = Convert.ToInt64(textBookID.Text);
dRow[1] = textBookName.Text;
dRow[2] = textISBN.Text;
等等(有30列)
bookDS.Tables["Book"].Rows.Add(dRow);
然后
提交按钮中的代码
con.open();
string sql = "Insert INTO Book Values (@BookId, @BookName, @ISBNNo, @PublicationId, @CategoryId, @Pages,@Price,@Author1,@Author2,@TotalCopies,@IssuedCopies,@AvailableCopies,@SupplierName,@Note)";
OleDbCommand save = new OleDbCommand(sql);
save.Parameters.Add("@BookId", OleDbType.BigInt).Value = Convert.ToInt64(dRow[0]);
save.Parameters.Add("@BookName", OleDbType.BSTR).Value = dRow[1];
save.Parameters.Add("@ISBNNo", OleDbType.BSTR).Value = dRow[2];
等等...
save.Connection = con; save.ExecuteNonQuery();
con.Close();
这就是我所能想到的,但这只适用于单行,所以我就像每次按下SAVE按钮时必须按下COMMIT按钮。
任何人都可以帮我这个???
P.S:我正在使用MS Access,也不想使用TABLEADAPTER(我想用我的代码做所有事情)
http://msdn.microsoft.com/en-us/library/xzb1zw3x.aspx
尝试使用OleDBDataAdapter完成此工作。或者您甚至可以尝试使用OleDBComamndBuilder(OleDb for Access数据库而不是Sql):
string sql = "Insert INTO Book Values (@BookId, @BookName, @ISBNNo, @PublicationId, @CategoryId, @Pages,@Price,@Author1,@Author2,@TotalCopies,@IssuedCopies,@AvailableCopies,@SupplierName,@Note)";
DataRow dRow = bookDS.Tables["Book"].NewRow();
dRow[0] = Convert.ToInt64(textBookID.Text);
dRow[1] = textBookName.Text;
dRow[2] = textISBN.Text;
bookDS.Tables["Book"].Rows.Add(dRow);
//This would help you to commit all the changes at once.
bookDS.AcceptChanges();