Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/01/2012, 20:37
sephiroth007234
 
Fecha de Ingreso: septiembre-2010
Mensajes: 5
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: MySQL WorkBench sintaxis Stored Procedures

Hola
antes que nada te agradezco la respuesta, y sobre la ñ tienes razón, jamas la utilicé, es mas hasta ahora que me lo dices no me doy cuenta, y es que le hice tantos cambios a la tabla, a los procedimientos que llegó un momento que y bueno ahí está el resultado.. de hecho en mi clase, donde encapsulo los datos de usuario el campo se llama password, pero al intentar darle el mismo nombre en el procedimiento pues me lo tomaba como una palabra reservada (y supongo que ahi fue donde metí la pata y escribi cualquier cosa) en fin ya lo he cambiado... Bueno sobre el manejo de excepciones, tengo la mala costumbre de hacer que funcione el código primero y luego incluirlo...

El caso es que ahora me da otro error: me dice que la columna 'nombre' no puede ser null y esta en lo cierto, en la tabla la definí de esa forma, lo que ocurre es que no debería ser null, pues le he pasado valores, lo he comprobado con un breackpoint, me parece que no esta asociando el parámetro que le paso con el campo de la tabla, dejo el fragmento de código:

MySqlCommand command = new MySqlCommand("sp_crear_usuario", conn);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("nombre", usuario.Nombre);
command.Parameters.AddWithValue("apellidos", usuario.Apellidos);
command.Parameters.AddWithValue("nick", usuario.Nick);
string password = EncriptaPassword(string.Concat(usuario.Nick, usuario.Password));
command.Parameters.AddWithValue("pass", password);
conn.Open();
usuario.Id_usuario = Convert.ToInt32(command.ExecuteScalar());
return usuario;

usuario es una clase donde encapsulo los datos, de manera tal que cuando digo usuario.Nombre obtengo el nombre del usuario que desea loguearse (verificado con breackpoint que al momento de llegar tiene el valor), sin embargo cuando llega a command.ExecuteScalar() me lanza el error que comentaba arriba.

Gracias por las observaciones que me haz hecho, me hubiera llevado un buen rato darme cuenta cuando empezaran a molestar errores por esas cosas. De momento estoy pasando directamente la consulta como un string:

String sql = "INSERT INTO usuario (usuario.nombre, usuario.apellidos, usuario.nick, usuario.pass)VALUES (?nombre, ?apellidos, ?nick, ?pass);SELECT MAX(usuario.idusuario) FROM usuario;";

y lo hace todo OK, solo que cuando hago Parameters.AddWithValues("?pass", password); incluyo el símbolo de interrogación, cosa que intente hacer al crear el procedimiento pero me marca error, como bien decía antes no se que inventar ya para que funcione el procedimiento
Saludos