【问题标题】:Incorrect syntax near 'varchar'. Incorrect syntax near 'Type''varchar' 附近的语法不正确。 “类型”附近的语法不正确
【发布时间】:2015-12-12 15:19:07
【问题描述】:

谁能告诉我错误在哪里,我在 cmd.ExecuteNonquery() 处收到错误,即“varchar”附近的语法不正确。 “类型”附近的语法不正确。

 string CS = ConfigurationManager.ConnectionStrings["RelayTestMachine.Properties.Settings.RelayTestConnectionString"].ConnectionString;

        using (SqlConnection con = new SqlConnection(CS))
        {

            SqlCommand cmd = new SqlCommand("INSERT INTO TestValue (Relay Type,Applied Voltage) VALUES(@Relay Type,@Applied Voltage)",con);

            cmd.Parameters.Add("@Relay Type", SqlDbType.VarChar).Value = tbRelayType.Text;

                if (rbtn100.Checked == true)
                {
                    cmd.Parameters.Add("@Applied Voltage", SqlDbType.VarChar).Value = rbtn100.Text;
                }
                if (rbtn75.Checked == true)
                {
                    cmd.Parameters.Add("@Applied Voltage", SqlDbType.VarChar).Value = rbtn75.Text;
                }
                con.Open();

                cmd.ExecuteNonQuery();

        }

【问题讨论】:

  • 列名不能包含空格,除非你 ""[] 引用它们。变量名不能包含空格。
  • 不要在@relay 类型之间留空格
  • 变量名中不允许有空格

标签: sql winforms ado.net


【解决方案1】:

尝试使用这个插入语句

INSERT INTO TestValue ([Relay Type],[Applied Voltage]) VALUES(@RelayType,@AppliedVoltage)

即,您需要从变量名中删除空格并将列名放入 []

【讨论】:

    【解决方案2】:

    从变量名中删除空格并将[] 添加到列名中。

    变量名和列名中不允许有空格 由它们之间的空格组成,那么它们必须用 []""

    INSERT INTO TestValue ([Relay Type],[Applied Voltage]) VALUES(@RelayType,@AppliedVoltage)"
    

    整个过程是这样的

    string CS = ConfigurationManager.ConnectionStrings["RelayTestMachine.Properties.Settings.RelayTestConnectionString"].ConnectionString;
    
            using (SqlConnection con = new SqlConnection(CS))
            {
    
                SqlCommand cmd = new SqlCommand("INSERT INTO TestValue ([Relay Type],[Applied Voltage]) VALUES(@RelayType,@AppliedVoltage)",con);
    
                cmd.Parameters.Add("@RelayType", SqlDbType.VarChar).Value = tbRelayType.Text;
    
                    if (rbtn100.Checked == true)
                    {
                        cmd.Parameters.Add("@AppliedVoltage", SqlDbType.VarChar).Value = rbtn100.Text;
                    }
                    if (rbtn75.Checked == true)
                    {
                        cmd.Parameters.Add("@AppliedVoltage", SqlDbType.VarChar).Value = rbtn75.Text;
                    }
                    con.Open();
    
                    cmd.ExecuteNonQuery();
    
            }
    

    【讨论】:

      猜你喜欢
      • 2013-12-16
      • 1970-01-01
      • 2018-08-14
      • 2011-03-11
      • 2014-02-16
      • 2017-01-11
      • 2020-02-06
      • 1970-01-01
      相关资源
      最近更新 更多