簡體   English   中英

如何在不使用命令生成器的情況下將 DATASET 中的行插入到我的 DATABASE 中?

[英]How do I insert Rows from my DATASET to my DATABASE without using command builder?

我有一個包含多個表的數據庫,每個表都鏈接到另一個。(關系數據庫)我想將記錄從我的數據集中插入到數據庫中。 首先,我嘗試使用 OledbCommandBuilder 但沒有用,我發現它不能用於關系數據庫。 我沒有在我的數據集中鏈接表,它們只在數據庫中鏈接。 我有一個名為“提交”的按鈕。 當我按下那個按鈕時,我希望我的 dataset.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);

然后

提交按鈕中的代碼

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 按鈕。

任何人都可以幫我解決這個問題嗎???

PS:我正在使用 MSAccess,也不想使用 TABLEADAPTER(我想用我的代碼做所有事情)

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

嘗試使用 OleDBDataAdapter 來完成這項工作。 或者您甚至可以嘗試使用 OleDBComamndBuilder(OleDb 用於 Access 數據庫而不是 Sql):

http://www.daniweb.com/software-development/csharp/threads/380925/how-to-save-a-dataset-into-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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM