如何在不使用命令构建器的情况下将行从数据集插入到数据库中



我有一个数据库,每个数据库都链接到另一个表。(关系数据库)我想将记录从数据集插入到数据库中。首先,我尝试使用OLEDBCommandBuilder,但这不起作用,我发现它无法与关系数据库使用。我没有在数据集中链接表中的表,它们仅在数据库中链接。我拥有的是一个名为" commit"的按钮。当我按下该按钮时,我希望数据集中的所有修改。dataTable可以反映在相应的数据库表中。我只知道如何插入,更新,一次删除单个记录,但这也是一项漫长的任务,因为我必须这样做。

保存按钮中的代码

             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);

然后

COMIL按钮中的代码

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();

这就是我能想到的,但这仅适用于一行,所以我就像每次按"保存"按钮时必须按"提交"按钮。

任何人都可以帮我吗?

P.S:我正在使用MSACCESS,也不想使用TableAdapter(我想用代码做所有事情)

http://msdn.microsoft.com/en-us/library/xzb1zw3x.aspx

尝试使用OLEDBDATAADAPTER进行此工作。或者,您甚至可以尝试使用OLEDBCOMAMNDBUILDER(OLEDB的访问数据库而不是SQL):

http://www.daniweb.com/software-development/csharp/threads/380925/how-to-to-save-aave-a-a-dataset-into-into-a-a-database

       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();

最新更新