Oracle 11g와 C#을 연결하고 있습니다. 필자는 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");
또한 DataTable의 내용을 보여주는 텍스트 상자 아래에 DataGridView가 있습니다.
dgvAuthor.DataSource = dt;
나는 새 행을 추가 할 때 지금 내가 할 수있는 모든 후 BM이
로의 Form_Load에 정의 그리고 저장시 버튼을 클릭
bm.AddNew();
정보가 입력되고 유효성이 확인됩니다.
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")
이 주된 키에 대해 아무 것도 지정되지 않았기 때문에이 예외가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까? 고맙습니다 :
신난다 :) 질문 하나, 듀얼 무엇인가? :) –