2017-03-02 2 views
-1

에 액세스하는,하지만 난 당신이 매개 변수를 정의하는 MS Access 데이터베이스ASP.Net 연결이 내 코드입니다

protected void Submit_Click(object sender, EventArgs e) 
    { 
     string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" 
      + @"Data Source=E:\Parhai\Semester 06\Web\Assignments\i140097_Assignment_02\i140097_a02\i140097_a02\Database\Survey.mdb; Persist Security Info=False"; 
     con = new OleDbConnection(connectionString); 
     con.Open(); 
     using (con) 
     { 
      cmd = new OleDbCommand("INSERT INTO [Person] (Gender, Age, Occupation, Income) VALUES (" + gender.Text + ",'" + age.Text + ",'" + occup.Text + ",'" + income.Text + ")"); 
      cmd.Parameters.AddWithValue("@Gender", gender.Text.ToString()); 
      cmd.Parameters.AddWithValue("@Age", int.Parse(age.Text.ToString())); 
      cmd.Parameters.AddWithValue("@Occupation", occup.Text.ToString()); 
      cmd.Parameters.AddWithValue("@Income", int.Parse(income.Text.ToString())); 
      lbl_show.Text = "Added!!!"; 
     }    
    } 
+0

오류가 ExecuteNonQuery로 인한 것 같습니다 ... 추가 할 예정입니까? –

+0

ExecuteNonQuerry를 추가하면 예외가 발생합니다 ... 무엇을할까요 ???? –

+0

게시 한 코드에 따라 SQL을 실행하지 않습니다. 그럼 당신의 의견은 오류를 언급 ... 당신이 누락되었습니다 : cmd.ExecuteNonQuery(); –

답변

1

에 데이터를 삽입 할 수 없습니다, 그러나 당신의 명령 텍스트는 매개 변수의 자리가 없습니다.
평소와 같이 문자열을 연결할 때 구문 오류가 발생하기 쉽습니다. 데이터베이스 있음 성별은 문자열 필드 인 것처럼 보입니다. 따라서 값을 따옴표로 묶어야합니다. 반대로 나이은 정수로 보이며 따옴표가 필요하지 않습니다.

첫 번째 단계는 문자열 연결을 제거하고 아래 정의 된 매개 변수를 사용하는 것입니다.

cmd = new OleDbCommand(@"INSERT INTO [Person] 
     (Gender, Age, Occupation, Income) VALUES 
     (@Gender, @Age, @Occupation, @Income)", con); 
cmd.Parameters.AddWithValue("@Gender", gender.Text); 
cmd.Parameters.AddWithValue("@Age", int.Parse(age.Text)); 
cmd.Parameters.AddWithValue("@Occupation", occup.Text); 
cmd.Parameters.AddWithValue("@Income", int.Parse(income.Text)); 
cmd.ExecuteNonQuery(); 

또 다른 문제는 명령을 작성할 때 누락 된 연결입니다.
그 자체로 명령은 실행할 데이터베이스를 알 수 없습니다. OleDbConnection을 두 번째 매개 변수로 OleDbCommand 생성자에 전달하거나 명령을 실행하기 전에 Connection 속성을 설정해야합니다. 물론

이 명령은 ..... 하루의 끝에

NB를 실행해야합니다. 또한 해당 TextBoxes의 Text 속성 다음에 ToString()을 제거했습니다. 텍스트는 이미 문자열이며, 문자열로 변환 할 필요가 없습니다.