2011-12-05 5 views
0

ms 액세스 데이터베이스에 내 클라이언트의 사용자 ID를 삽입하는 동안 오류가 발생합니다.OLEDB의 오버 플로우 예외

오류는 오버플로입니다.

위의 오류가 나타나면 삽입하려고합니다.

나는이 코드를 사용하고 있습니다.

 OleDbCommand cmd = new OleDbCommand("insert into UserInfo " + "([firstname], [lastname], [gender], [occupation], [expirydate], [UserId], [phoneno]) " + " values('" + txt_FirstName.Text + "','" + txt_LastName.Text + "','" + cmb_Gender.Text + "','" + cmb_Occupation.Text + "','" + txt_expiryDate.Text + "','" + txt_HardDiskId.Text + "','" + txt_PhoneNo.Text + "');", con); 
     OleDbCommand cmd1 = new OleDbCommand("select * from UserInfo where (HardDiskId='" + txt_HardDiskId.Text + "')", con); 
     int temp = 0; 
     try 
     { 
      con.Open(); 
      string count = (string)cmd1.ExecuteScalar(); 
      if ((count == "") || (count == null)) 
      { 
       temp = cmd.ExecuteNonQuery(); 
       if (temp > 0) 
       { 
        MessageBox.Show("User ID of " + txt_FirstName.Text + " " + txt_LastName.Text + " has been added"); 
       } 
       else 
       { 
        MessageBox.Show("Record not added"); 
       } 
      } 
      else 
      { 
       MessageBox.Show("User ID of " + txt_FirstName.Text + " already exists. Try another user ID."); 
      } 
     } 
+0

어떤 오류가 발생합니까? _exact_ 오류/예외 메시지를 게시 할 수 있습니까? ? – Oded

+0

temp = cmd.ExecuteNonQuery();이 줄에 –

+0

그건 그렇고, SQL에 문자열을 연결하는 것은 좋은 생각이 아닙니다. 귀하의 코드는 [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection)에 열려 있습니다. – Oded

답변

1

은 제외하고 (당신이 당신의에서 OleDbCommand를 파라미터해야하는) SQL 인젝션에 개방되는 것을, 문제에 대한 첫번째 생각은 데이터를 저장하려고하는 것입니다. 텍스트 필드에 특수 문자 또는 아포스트로피가 포함되어 있지 않으면 포함 된 .... "+ nextField +" '... "항목을 사전 종료하고 잔액을 버립니다.

파서가 까다 롭다는 것을 알지는 못한다. 그러나 값 뒤에 공백이 생기면 ... "값 ("~ "값 (". "값"(

) 만료일 날짜 필드에 텍스트를 입력하려고하면 데이터 형식 변환에 실패 할 수 있습니다.

+0

도움을 주셔서 감사합니다. 나는 이것을 명심 할 것입니다. –