2013-02-20 155 views
1

我試圖使用C#將項目添加到我的數據庫。 我有2個表的數據庫:如何添加項目到數據庫?

「項目部分」

「項目表」,該表中有一個名爲「項目名稱」

但即時得到這個錯誤列:

There was an error parsing the query. [ Token line number = 1,Token line offset = 21,Token in error = Table ]

這裏是我使用的代碼。

private void button1_Click(object sender, EventArgs e) 
    { 
     sqlCEC.Open(); 

     //Project_List.Items.Add(new_project_name.Text.ToString()); 
     SqlCeCommand sqlCEcommand = new SqlCeCommand("INSERT INTO Project Table(Project Name) VALUES(@Project Name)", sqlCEC); 
     sqlCEcommand.Parameters.AddWithValue("@Project Name", new_project_name.Text); 

     sqlCEcommand.ExecuteNonQuery(); 

     sqlCEC.Close(); 
    } 
+0

看看這個問題,它的答案:[http://stackoverflow.com/questions/4436440/pros-and-cons-of-table-name-having-spaces](http://stackoverflow.com /問題/ 4436440 /優點和利弊-的表名,有-空格)。 – 2013-02-20 15:11:35

+0

我不認爲這些空格在表名中是有效的。我只是試圖創建一個測試CE數據庫,並且當我使用了您提供的表名和列名稱時,它抱怨說。他們只是個例子嗎? – cameronjchurch 2013-02-20 15:35:06

回答

1

怎麼樣?

private void button1_Click(object sender, EventArgs e) 
{ 
    sqlCEC.Open(); 
    SqlCeCommand sqlCEcommand = new SqlCeCommand("INSERT INTO [Project Table]([Project Name]) VALUES([@Project Name])", sqlCEC); 
    sqlCEcommand.Parameters.AddWithValue("@Project Name", new_project_name.Text); 
    sqlCEcommand.ExecuteNonQuery(); 
    sqlCEC.Close(); 
} 

因爲你的數據庫對象包含空格,需要用[]

我卑微的建議是將它們封閉,從未使用空格或其他特殊字符在表或列名。

+0

謝謝。認爲我得到了它的工作。現在它無法找到正確的列名,但我將開始重命名錶和列,並且沒有特殊字符。 :) 謝謝。 – 2013-02-20 15:29:48

+0

歡迎你':D' – 2013-02-20 15:30:34

1

你需要附上具有與支架空間的表和字段。

SqlCeCommand sqlCEcommand = new SqlCeCommand("INSERT INTO [Project Table] ([Project Name]) VALUES (@ProjectName)", sqlCEC);

而且,不包括在參數變量的任何空間,嘗試改變它只是@ProjectName:在他們

sqlCEcommand.Parameters.AddWithValue("@ProjectName", new_project_name.Text); 
1

表名和列名與空間通常都被包裹在[]。此外,參數不能有空格的

INSERT INTO [Project Table]([Project Name]) VALUES(@ProjectName) 

sqlCEcommand.Parameters.AddWithValue("@ProjectName", new_project_name.Text); 
1

當一個數據庫對象包含它需要用方括號括這個名字空間。
也不要使用空格來命名您的參數。

private void button1_Click(object sender, EventArgs e) 
{ 
    sqlCEC.Open(); 
    SqlCeCommand sqlCEcommand = new SqlCeCommand("INSERT INTO [Project Table] " + 
      "([Project Name]) VALUES(@ProjectName)", sqlCEC); 
    sqlCEcommand.Parameters.AddWithValue("@ProjectName", new_project_name.Text); 
    sqlCEcommand.ExecuteNonQuery(); 
    sqlCEC.Close(); 
} 
相關問題