SQLException已发生:''附近的语法不正确

时间:2018-11-09 17:38:08

标签: c# sql-server sql-insert sqlexception executenonquery

我知道

  

SqlException :nvarchar附近的语法不正确
  “ ID”附近的语法不正确

在我的代码中。请有人帮我解决吗?

我的代码是

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
   partial class Form2 : Form
   {
       public Form2()
       {
           InitializeComponent();
       }

       SqlCommand cmd;
       SqlConnection con = new SqlConnection(@"Data Source=HAIER-PC;Initial Catalog=PDCS;Integrated Security=True");
       SqlDataAdapter SDA;

       private void button3_Click(object sender, EventArgs e)
       {
            con.Open();
            cmd = new SqlCommand("INSERT INTO CusUtil(Customer ID, Age, Experience, Preferred Alternatives, Outer Shell, Base Gasket, Vent, Vent Type, Impact Absorbent Liner, Eyeport Gasket, Face Shield, Comfort Liner, Chin Strap, Weight, Estimated Price)
                                  VALUES(@Customer ID, @Age, @Experience, @Preferred Alternatives, @Outer Shell, @Base Gasket, @Vent, @Vent Type, @Impact Absorbent Liner, @Eyeport Gasket, @Face Shield, @Comfort Liner, @Chin Strap, @Weight, @Estimated Price)", con);
           cmd.Parameters.Add("@Customer ID", textBox1.Text);
           cmd.Parameters.Add("@Age", comboBox1.SelectedItem.ToString());
           cmd.Parameters.Add("@Experience", comboBox2.SelectedItem.ToString());
           cmd.Parameters.Add("@Preferred Alternatives", comboBox3.SelectedItem.ToString());
           cmd.Parameters.Add("@Outer Shell", textBox2.Text);
           cmd.Parameters.Add("@Base Gasket", textBox3.Text);
           cmd.Parameters.Add("@Vent", textBox4.Text);
           cmd.Parameters.Add("@Vent Type", textBox5.Text);
           cmd.Parameters.Add("@Impact Absorbent Liner", textBox6.Text);
           cmd.Parameters.Add("@Eyeport Gasket", textBox7.Text);
           cmd.Parameters.Add("@Face Shield",textBox8.Text);
           cmd.Parameters.Add("@Comfort Liner",textBox9.Text);
           cmd.Parameters.Add("@Chin Strap",textBox10.Text);
           cmd.Parameters.Add("@Weight",textBox11.Text);
           cmd.Parameters.Add("@Estimated Price",textBox12.Text);

           cmd.ExecuteNonQuery();
           con.Close();
       }
    }
}

错误发生在ExecuteNonQuery。该代码只是将数据保存到SQL Server数据库中。

2 个答案:

答案 0 :(得分:1)

在mysql中,允许在列名中使用空格,但是列名必须用反斜线..包起来,以便让用户看到带有反斜线的命令

但根据Uuerdo的建议,。不应使用参数中的空格...尝试使用下划线(或驼峰式大小写)

`

 cmd = new SqlCommand("INSERT INTO CusUtil(`Customer ID`, 
        Age,Experience,`Preferred Alternatives`,`Outer Shell`,`Base 
        Gasket`,Vent,`Vent Type`,`Impact Absorbent Liner`,`Eyeport Gasket`
        ,`Face Shield`,`Comfort Liner`,`Chin Strap`,Weight,`Estimated 
        Price`)VALUES(@Customer_ID,@Age,@Experience,@Preferred_Alternatives,
     @Outer_Shell,@Base_Gasket,@Vent,@Vent_Type,@Impact_Absorbent_Liner,
      @Eyeport_Gasket,@Face_Shield,@Comfort_Liner,
   @Chin_Strap,@Weight,@Estimated_Price)",con);

在SQLSERVER中使用[]代替``

答案 1 :(得分:-1)

请为列中的空格添加[]-方括号,并删除“参数”上的空格。这将有所帮助,因为这都取决于您在mySQL上设置的模式