2010-02-23 17 views
5

(INT)faultsGroup爲0或1,但我總是得到這個錯誤:列「FaultGroup」不能爲空C#了MySQLParameter問題

有誰告訴我爲什麼?語法看起來不錯。

MySqlCommand cmdAdd = new MySqlCommand("INSERT INTO Faults (" + 
     " FaultGroup, Text, Date, IP" + 
     ") VALUES (" + 
     " @FaultGroup, @Text, @Date, @IP" + 
     ")", conn); 

MySqlParameter paramFaultGroup = new MySqlParameter("@FaultGroup", MySqlDbType.Int32); 
FaultsGroup faultsGroup = (FaultsGroup) Enum.Parse(typeof (FaultsGroup), myFault.FaultGroup); 
paramFaultGroup.Value = (int) faultsGroup; 
cmdAdd.Parameters.Add(paramFaultGroup); 

cmdAdd.ExecuteNonQuery(); 
+1

您應該通過單擊答案旁邊的空白複選標記來接受您的問題的答案。 – SLaks 2010-02-23 22:38:46

回答

4

我沒有使用MySQL的約6個月(謝天謝地遷移出到SQL Server),但是,嘗試改變你的@符號?的,因爲如果沒有記錯,這是與MySQL正確的慣例,所以:

MySqlCommand cmdAdd = new MySqlCommand(
     "INSERT INTO Faults (FaultGroup, Text, Date, IP)" 
     + " VALUES (?FaultGroup, ?Text, ?Date, ?IP)", 
     conn); 

MySqlParameter paramFaultGroup = new MySqlParameter("?FaultGroup", MySqlDbType.Int32); 
FaultsGroup faultsGroup = (FaultsGroup) Enum.Parse(typeof (FaultsGroup), myFault.FaultGroup); 
paramFaultGroup.Value = (int) faultsGroup; 
cmdAdd.Parameters.Add(paramFaultGroup); 

cmdAdd.ExecuteNonQuery(); 
+1

實際上,'@'符號工作正常,至少對於MySQL ADO.Net連接器(我假設OP正在使用)。 – 2010-02-23 22:56:33

+1

問題出現在ado.net連接器的版本中。我正在使用5.1.7現在我正在使用v6。 Thx all for help – senzacionale 2010-02-24 08:57:17

+0

我怎麼知道這個版本? – kbvishnu 2011-05-30 06:13:52