错误“'/'附近的语法不正确

时间:2014-03-29 01:42:57

标签: c# sql sql-server

我的C#出现了问题,每当我尝试在数据库中保存来自串口通信的新数据时,就会出现错误并说

  

语法不正确' /'

我尝试了每个人给出的每一个建议,但它不会停止......这就是它出来的代码片段。

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    SqlConnection cn = new SqlConnection(global::test_new.Properties.Settings.Default.Database3ConnectionString);
    try
    {
        string sql = "INSERT INTO PowerData (Date/Time,Power(W)) values(" + this.powerTextBox.Text + ",'" + this.powerTextBox.Text + "'");

        SqlCommand exeSql = new SqlCommand(sql, cn);
        cn.Open();
        exeSql.ExecuteNonQuery();

        this.powerDataTableAdapter.Fill(this.database3DataSet.PowerData);

    }
    catch (Exception ex)
    {

    }
}

4 个答案:

答案 0 :(得分:3)

您需要转义表格和列名称中的特殊字符,例如/

INSERT INTO PowerData ([Date/Time], Power(W)) values ...

在MySQL中使用反引号来逃避,在MSSQL中使用括号。

答案 1 :(得分:2)

你有一些疯狂的专栏名称。如果要在列名中包含特殊字符,那么必须将它们包装在SQL的括号中,例如[Date/Time]。更好的想法是首先不要使用这些字符。

答案 2 :(得分:0)

语法应如下所示,使用特殊字符转义所有列

INSERT INTO PowerData
([Date/Time], [Power(W)])
VALUES
(GETDATE(), 'test1')

DEMO

答案 3 :(得分:0)

首先," this.powerTextBox.Text" - 我猜这两个变量不应该是相同的值

将您的代码更改为:

DateTime dt = DateTime.Parse(this.powerTextBox.Text); 
string PowerW = this.powerTextBox.Text;
string sql = "INSERT INTO PowerData ([Date/Time],[Power(W)]) values(@val1, @val2);"

    SqlCommand exeSql = new SqlCommand(sql, cn);
exeSql.Parameters.AddWithValue("@val1",  dt);
exeSql.Parameters.AddWithValue("@val2",  PowerW);
    cn.Open();
exeSql.ExecuteNonQuery();