それぞれが相互にリンクされた複数のテーブルを持つデータベースがあります。(リレーショナル データベース) データセットからデータベースにレコードを挿入したいと考えています。最初に OledbCommandBuilder を使用してみましたが、うまくいきませんでした。リレーショナル データベースでは機能しないことがわかりました。データセット内でテーブルをリンクしていません。それらはデータベース内でのみリンクされています。私が持っているのは、「コミット」という名前のボタンです。そのボタンを押すと、dataset.datatable のすべての変更がそれぞれのデータベース テーブルに反映されます。一度に 1 つのレコードを 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 ボタンを押す必要があるようです。
誰でもこれで私を助けてもらえますか???
PS : MSAccess を使用していますが、TABLEADAPTER も使用したくありません (自分のコードですべてを実行したい)