![](/img/trans.png)
[英]How do I refresh my datagrid view from another form after I insert and update my values inside my 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):
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.