1

パラメータを使用して DB に情報を挿入しようとしていますが、パラメータ値を追加する代わりに、パラメータ名が DB に追加されます。ここに私のコードがあります:

 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);
        }

しかし、コードを実行すると、これが得られます

ここに画像の説明を入力

4

1 に答える 1

3

機能しない理由は、パラメーターが一重引用符で囲まれているため、文字列リテラルに変換され、それらの周りの一重引用符を削除すると、確実に機能するためです。

パラメータは識別子であり、文字列リテラルではないため、一重引用符で囲んではなりません。

VALUES
(   @CalligraphyNeeded, @Comments , @NameEnglish 
   ,@JobTitleEnglish , @NameArabic , @JobTitleArabic
   ,@BOBOX , @HomePhoneNumber 
   ,@FAXNumber , @OfficePhoneNumber , @MobileNumber
   ,@Email  
)
于 2013-03-16T11:22:39.177 に答える