2013-03-16 2 views
1

매개 변수를 사용하여 DB에 정보를 삽입하려하지만 매개 변수 값을 추가하는 대신 매개 변수 이름이 DB에 추가됩니다. 여기 내 코드입니다 :INSERT 문에서 매개 변수가 작동하지 않는 이유는 무엇입니까?

try {    
    vSqlCeConnection.Open(); 
     SqlCeCommand vCommand = new SqlCeCommand(@"INSERT INTO BusinessCards 
           ( CalligraphyNeeded , Comments , NameEnglish 
           , JobTitleEnglish , NameArabic , JobTitleArabic 
           ,BOBOX , HomePhoneNumber 
           , FAXNumber , OfficePhoneNumber , MobileNumber , Email) 
         VALUES 
           ( @CalligraphyNeeded, '@Comments' ,'@NameEnglish' 
           ,'@JobTitleEnglish' ,'@NameArabic' ,'@JobTitleArabic' 
           ,'@BOBOX' ,'@HomePhoneNumber' 
           ,'@FAXNumber' ,'@OfficePhoneNumber' ,'@MobileNumber' 
           ,'@Email' ) " , vSqlCeConnection); 




      if (checkBoxCalligraphy.Checked == true) 
      { 
       vCommand.Parameters.AddWithValue("@CalligraphyNeeded", 1); 
      } 
      else 
      { 
       vCommand.Parameters.AddWithValue("@CalligraphyNeeded", 0); 
      } 
      vCommand.Parameters.AddWithValue("@Comments", richTextBoxComments.Text); 
      vCommand.Parameters.AddWithValue("@NameEnglish", textBoxEnglishName.Text);    vCommand.Parameters.AddWithValue("@JobTitleEnglish",richTextBoxEnglishJobTitle.Text); 
      vCommand.Parameters.AddWithValue("@NameArabic", textBoxArabicName.Text + " ff"); 
      vCommand.Parameters.AddWithValue("@JobTitleArabic", richTextBoxArabicJobTiltle.Text + " ff"); 
      vCommand.Parameters.AddWithValue("@BOBOX", textBoxPOBox.Text + " ff"); 
      vCommand.Parameters.AddWithValue("@HomePhoneNumber", textBoxHomePhone.Text + " ff"); 
      vCommand.Parameters.AddWithValue("@FAXNumber", textBoxFax.Text + " ff"); 
      vCommand.Parameters.AddWithValue("@OfficePhoneNumber", textBoxOfficePhone.Text + " ff"); 
      vCommand.Parameters.AddWithValue("@MobileNumber", textBoxMobile.Text + " ff"); 
      vCommand.Parameters.AddWithValue("@Email", textBoxEmail.Text + " ff"); 
      MessageBox.Show(vCommand.CommandText); 
      vCommand.Prepare(); 
       vCommand.ExecuteNonQuery(); 


     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Sorry error: " + ex.Message); 
     } 

하지만 코드를 실행할 때 그것은 나에게이 매개 변수를 작은 따옴표가 원인으로 enlosed 때문이다 작동하지 않는 이유

enter image description here

답변

3

이유를 제공 문자열 리터럴으로 변환하려면 작은 따옴표를 제거하면 올바르게 작동합니다.

매개 변수는 문자열 리터럴이 아닌 식별자이므로 작은 따옴표로 묶어서는 안됩니다.

VALUES 
( @CalligraphyNeeded, @Comments , @NameEnglish 
    ,@JobTitleEnglish , @NameArabic , @JobTitleArabic 
    ,@BOBOX , @HomePhoneNumber 
    ,@FAXNumber , @OfficePhoneNumber , @MobileNumber 
    ,@Email 
) 
+1

감사 JW, 은 분명 무슨 실수 :( – Mutken

+0

당신은'환영합니다 :. 그것은 도움이 기뻐 D' –

+0

을 실제로 영업 이익의 코드에서 첫 번째 매개 변수 (CalligraphyNeeded는) 정확했다, 심지어 데이터베이스에 그것을 만들었다 적절한 값으로. –

관련 문제