2016-05-28 20 views
-2

我編寫此代碼以從文本框中提取數據到數據庫,但是當它轉到cmd.ExecuteNonQuery();代碼時,它顯示Incorrect syntax near '-'.錯誤。在c#中的語法錯誤.net

這是代碼我寫:

private void pictureBox1_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(); 
    string str = "server=localhost;Database=ord-95;Integrated Security=True"; 
    con.ConnectionString = str; 

    //SqlDataAdapter da = new SqlDataAdapter(); 

    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = con; 



    //DataSet ds = new DataSet(); 

    cmd.CommandText = " insert into build-seller" + 
     "(name-build, name-Seller, family-Seller)" + 
     "values(@name-build, @name-Seller, @family-Seller)"; 

    cmd.Parameters.AddWithValue("@name-build",txtbuild.Text); 

    cmd.Parameters.AddWithValue("@name-Seller",txtname.Text); 

    cmd.Parameters.AddWithValue("@family-Seller",txtfamily.Text); 

    con.Open(); 

    cmd.ExecuteNonQuery(); 

    con.Close(); 



    txtamount.Text = ""; 
    txtbuild.Text = ""; 
    txtfamily.Text = ""; 
    txtname.Text = ""; 
    txtobject.Text = ""; 
    txtshop.Text = ""; 
    MessageBox.Show("success !", "msg", 
     MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 
+1

加上'[]'圍繞每個字支架與'-',然後再試一次。例如:'[build-seller]','[name-build]'等等。 –

+0

你不能看SQL並解開神祕的錯誤信息嗎? – Plutonix

+1

不要以這種方式連接字符串! [字符串不可變](https://msdn.microsoft.com/en-us/library/362314fe.aspx)! –

回答

4

您正在使用什麼數據庫管理系統?您需要分隔包含在其中-與無論是使用你的特殊風味DMBS列名...

SQL Server使用[],所以select語句應該是:

SELECT [column-a], [column-b] from [Table-1]; 

甲骨文使用",所以select語句應該是:

SELECT "column-a", "column-b" from "Table-1"; 

MySQL使用反單引號',所以select語句應該是:

SELECT `column-a`, `column-b` from `Table-1`; 
0

答案已經給出,但你也可以解決:

cmd.CommandText = @" insert into build-seller 
     (name-build, name-Seller, family-Seller) 
     values(@name-build, @name-Seller, @family-Seller)"; 
+0

我相信當DBMS嘗試執行它時仍會出錯。問題不在於應用程序代碼,因爲它是DBMS如何在語句中解釋'-'的問題。 – gmiley

+0

@gmiley我在談論不必要的字符串連接。 – shadow