C#をOracle11gに接続しています。OracleDataAdapterを使用して入力するDataTableがあります。
OracleDataAdapter da;
DataTable dt = new DataTable();
da = new OracleDataAdapter("SELECT * FROM Author", con);
da.Fill(dt);
データテーブルのさまざまな行にデータバインドされているテキストボックスがいくつかあります。
txtAuthorID.DataBindings.Add("Text", dt, "AUTHORID");
txtFirstName.DataBindings.Add("Text", dt, "FIRSTNAME");
txtLastName.DataBindings.Add("Text", dt, "LASTNAME");
txtAddress.DataBindings.Add("Text", dt, "ADDRESS");
txtTelephone.DataBindings.Add("Text", dt, "TELEPHONE");
txtEmailAddress.DataBindings.Add("Text", dt, "EMAIL");
また、テキストボックスの下にDataGridViewがあり、DataTableの内容を示しています。
dgvAuthor.DataSource = dt;
新しい行を追加したいときは、
bm.AddNew();
ここで、bmはForm_Loadで次のように定義されています。
BindingManagerBase bm;
bm = this.BindingContext[dt];
そして、すべての情報が入力されて検証された後に保存ボタンがクリックされると、私は
this.BindingContext[dt].EndCurrentEdit();
try
{
da.Update(dt);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
ただし、問題は、通常(SQL Plusを使用して)データベースに行を入力するときに、主キーにmy_pk_sequence.nextvalを使用する場合に発生します。しかし、このメソッドに新しい行を追加するときにそれを指定するにはどうすればよいですか?
ORA-01400: cannot insert NULL into ("SYSMAN".AUTHOR.AUTHORID")
主キーに何も指定されていないので明らかなこの例外をキャッチし
ます。これを回避するにはどうすればよいですか?事前に感謝します:)