'/'附近“语法不正确”
本文关键字:语法不正确 不正确 附近 语法 | 更新日期: 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();