如何在不使用命令构建器的情况下将DATASET中的Rows插入到DATABASE?

问题描述 投票:2回答:2

我有一个包含多个表的数据库,每个表都链接到另一个。(关系数据库)我想将记录从我的数据集插入数据库。首先我尝试使用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(我想用我的代码做所有事情)

c# database ado.net dataset oledb
2个回答
0
投票

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

尝试使用OleDBDataAdapter完成此工作。或者您甚至可以尝试使用OleDBComamndBuilder(OleDb for Access数据库而不是Sql):

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


0
投票
       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();
© www.soinside.com 2019 - 2024. All rights reserved.