c# - 为什么参数在我的 INSERT 语句中不起作用?

标签 c# sql winforms sql-server-ce sql-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);
        }

但是当我执行代码时它给了我这个

enter image description here

最佳答案

它不起作用的原因是因为参数用单引号引起来,导致它被转换为字符串文字,删除它们周围的单引号,它肯定会起作用。

参数是标识符而不是字符串文字,因此它们不能用单引号引起来。

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

关于c# - 为什么参数在我的 INSERT 语句中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448615/

相关文章:

c# - 在 Newtonsoft JSON.NET 模式中禁用空类型

使用 System.Addin (MAF) 的 C# 源代码示例?

.net - Arial Unicode MS是WinForms UI的正确字体吗?

c# - 如何 "dock"/附加winforms表单

c# - 保留对接口(interface)方法的引用并将其应用于该接口(interface)的实现

c# - 如何使用 C# 在 excel 中突出显示数据范围?

c# - 在 ASP.NET MVC 中使用简单查询

mysql - 插入 1 个已知值和 2 个选择

c# - 如何在 Google 文档中获取文件夹中的所有文档

javascript - 在 UI 和数据库中表示时间段