mysql - C# How to pass sql variable -
i'm trying insert values mysql database via c#
insert cliente (column1, column2) values (value1, value2); set @ultima_pk = last_insert_id(); insert cliente_ref (refcol1, refcol2) values (refvalue1, (select @ultima_pk)); insert cliente_ref (refcol1, refcol2) values (refvalue1, (select @ultima_pk));
when test in mysql only, work when try insert via c# cannot.
error message:
parameter '@ultima_pk' must defined.
but @ultima_pk not param, mysql variable.
bellow insert function
public bool insert(string query) { this.conectar(); cmd = new mysqlcommand(query, this.conexion); cmd.executereader(); //bool retornar = cmd.executenonquery() >= 1 ? true : false; bool retornar = true; this.desconectar(); return retornar; }
the connection working perfecfly.
any suggestion how can pass @ultima_pk inside of query in c#?
you need declare it, , don't need select it:
declare @ultima_pk int; insert cliente (column1, column2) values (value1, value2); set @ultima_pk = last_insert_id(); insert cliente_ref (refcol1, refcol2) values (refvalue1, @ultima_pk); insert cliente_ref (refcol1, refcol2) values (refvalue1, @ultima_pk);
call this:
public bool insert_cliente(string value1, string value2, string refvalue, string refvalue2) { string query = @" declare @ultima_pk int; insert cliente (column1, column2) values (@value1, @value2); set @ultima_pk = last_insert_id(); insert cliente_ref (refcol1, refcol2) values (@refvalue1, @ultima_pk); insert cliente_ref (refcol1, refcol2) values (@refvalue2, @ultima_pk);"; cmd = new mysqlcommand(query, this.conexion); //i had guess @ parameter types/lengths. use actual column definitions database cmd.parameters.add("@value1", mysqldbtype.varchar, 50).value = value1; cmd.parameters.add("@value2", mysqldbtype.varchar, 50).value = value2; cmd.parameters.add("@refvalue", mysqldbtype.varchar, 50).value = refvalue; cmd.parameters.add("@refvalue2", mysqldbtype.varchar, 50).value = refvalue2; try { this.conectar(); return (cmd.executenonquery() >= 1); } { this.desconectar(); } }
Comments
Post a Comment