'/'附近“语法不正确”

本文关键字:语法不正确 不正确 附近 语法 | 更新日期: 2023-09-27 17:54:35

我有一个问题与我的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)
    {
    }
}

'/'附近“语法不正确”

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

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

在MySQL中使用反号转义,在MSSQL中使用括号。

这里有一些疯狂的列名。如果你想在列名中包含这样的特殊字符,那么你必须在SQL中将它们括在括号中,例如[Date/Time]。最好一开始就不要使用这样的字符。

语法应该如下所示,用特殊字符

转义所有列
INSERT INTO PowerData
([Date/Time], [Power(W)])
VALUES
(GETDATE(), 'test1')

首先,"this.powerTextBox. "文本"-我猜这两个变量

不应该是相同的值

把你的代码改成:

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