我將C#與Oracle 11g連接起來。我有一個使用Oracle Data Adapter填充的DataTable。以Oracle序列作爲主鍵在數據綁定表格中添加新行
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定義爲
而且畢竟當保存按鈕被點擊信息輸入和驗證,我做
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")
這很明顯,因爲沒有指定主鍵。如何解決這個問題?提前感謝:)
真棒:)一個問題,什麼是雙? :) – 2010-06-13 17:31:21