2010-02-23 13 views
5

(int) faultsGroup es 0 o 1, pero siempre me sale este error: Columna 'FaultGroup' no puede ser nuloC# MySqlParameter problema

¿Alguien me diga por qué? La sintaxis se ve bien.

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

Debe aceptar las respuestas a sus preguntas haciendo clic en la marca de verificación vacía junto a la respuesta. – SLaks

Respuesta

4

no he usado MySQL durante unos 6 meses (por suerte migrado fuera a SQL Server), pero, trate de cambiar su @ símbolos para? 'S, como si la memoria no sirve, que es la convención correcta con MySQL, por lo :

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

En realidad, el símbolo '@' funciona bien, al menos para el conector ADO.Net de MySQL (que supongo que está utilizando el OP). El problema –

+1

estaba en la versión del conector ado.net. Estaba usando 5.1.7 ahora estoy usando v6. Thx all for help – senzacionale

+0

¿cómo puedo saber acerca de la versión? – kbvishnu