2017-02-09 37 views
0

我有一個INSERT語句WPF C#插入到mysql AddWithValue

command.CommandText = " insert into system (ziel, comment, status,art) values (@eort,@comment,@statebox,@Eart) "; 

statebox的背後,是一個組合框。在Combobox中可以選擇的每個單詞都是作爲數據庫中的一個表單創建的。在這裏創建

值:

  command.Parameters.AddWithValue("@eort",textBo3x.Text); 
     command.Parameters.AddWithValue("@comment", textBox_Copy1.Text); 
     command.Parameters.AddWithValue("@statebox", MyComboBox.Text); 
     command.Parameters.AddWithValue("@Eart", MyComboBox_Copy1.Text); 
     command.Parameters.AddWithValue("@thetime", thetime_insert.Text); 

這工作。

但我想用@values在這樣的INSERT語句:

command.CommandText = " insert into els (ziel, @statebox,comment,status,Eart) values (@eort,@thetime,@comment,@statebox,@Eart) "; 

這給了我一個MySQL錯誤。

似乎@值有''的話。 我該如何刪除?

+0

您不能使用參數來引用字段名稱。你爲什麼想這樣做? – Steve

+0

好吧,我希望用戶可以決定他想在哪個字段中寫入時間。 –

+0

如果您向用戶提供預先確定的字段列表,他/她可以選擇該字段,那麼您可以安全地使用字符串形式連接來插入字段來更新/插入到 – Steve

回答

2

您的INSERT聲明如下所示是錯誤的。你不能簡單地插在你的INSERT語句動態列不中你的表模式

insert into system (ziel, @statebox,comment,status,Eart) 

存在這隻能在SELECT聲明的情況下進行,並在下面做的是完全沒有問題

select ziel, @statebox,comment,status,Eart from `system` 

好吧,如果你在變量有你的列名,然後建立自己的查詢字符串像

string query = string.Format("insert into els (ziel, {0},comment,status,Eart) values ", column_name_variable); 
+0

但我怎麼能意識到用戶可以決定在哪個錶行中寫入時間? –

+0

@T先生,請參閱編輯回答如果有幫助 – Rahul

1

不能使用參數引用一個字段名稱。但是,如果您向用戶提供了他/她可以選擇的預定字段列表,則可以安全地使用字符串拼接形式來插入字段以更新/插入。

這意味着你需要有一個沒有任何編輯能力的組合框,而只需要選擇可能的字段。

在你的情況,似乎這個組合框可能是一個名爲MyComboBox

因此

command.CommandText = @"insert into els 
     (ziel, " + MyComboBox.SelectedItem.ToString() + 
     @",comment,status,Eart) values 
     (@eort,@thetime,@comment,@statebox,@Eart)"; 

說,考慮到除去使用AddWithValue的。這個快捷方式has big drawbacks,特別是當你傳遞一個字符串變量(文本),並希望它能夠正確地翻譯日期時間值中的文本。 使用Add方法代替轉換並檢查輸入並指定參數的正確日期類型。

DateTime dt; 
if(!DateTime.TryParse(thetime_insert.Text, out dt); 
    // Message, not a valid date.... 
else 
    command.Parameters.Add("@thetime", MySqlDbType.Date).Value = dt; 
+0

非常感謝你 –

+0

很高興能有所幫助。作爲網站的新用戶,我建議閱讀[接受答案的工作方式](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work),然後決定如果這裏有答案幫助你解決你的問題 – Steve