【问题标题】:Error "Incorrect Syntax Near '/'错误“'/'附近的语法不正确
【发布时间】:2014-03-29 01:42:57
【问题描述】:

我的 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)
    {

    }
}

【问题讨论】:

标签: c# sql sql-server


【解决方案1】:

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

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

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

【讨论】:

  • 我已经改过了,但是错误“'/'附近的语法不正确。不断弹出。
【解决方案2】:

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

【讨论】:

  • 好的,已经改了。。但是还是弹出错误,编译器说是从这一行来的。。exeSql.ExecuteNonQuery();
【解决方案3】:

语法应该像下面这样,用特殊字符转义所有列

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

DEMO

【讨论】:

    【解决方案4】:

    首先,“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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多