c# - MySQL causing fatal error after executing query with parameters -
i creating method execute query 1 or more parameters.
code:
public static ienumerable<t> executequerywithparameters<t>(string query, string connectionstring, string[] parametersarray, string[] valuesarray) { using (mysqlconnection connection= new mysqlconnection(connectionstring)) { using (var cmd = new mysqlcommand(query, connection)) { (int = 0; < parametersarray.length; i++) { cmd.parameters.addwithvalue(parametersarray[i], valuesarray[i]); } connection.open(); return connection.query<t>(query); } } } tempsave table structure:
+------------------------------+ |id|localization|items|quantity| +------------------------------+ how works:
when called, method receive 4 parameters:
- a
query(example:select * tempsave localization = @localization) - a connection string (example:
server=localhost; database=wintestbeta;user=root; password=;) - a string array contains 1 or more parameters (they this:
@parameter1) - a string array contains 1 ore more values
then create new variable of type mysqlconnection called connection 1 parameter, connectionstring.
after create variable type mysqlcommand called cmd 2 parameters, 1 query , other connection.
then enter loop size of parametersarray length, inside loop add new parameter cmd 2 parameters, parameterarray index equal i, , valuearray index equal i.
then open connection , execute query, receives query return.
code used debug:
ienumerable<tempsave> _checktemp; string check_tempsave = "select * tempsave localization=@localization"; string[] parameters = new string[] { "@localization" }; string[] values = new string[] { _save.localization }; _checktemp = sql.executequerywithparameters<tempsave>(check_tempsave, sql.connectionstring, parameters, values); problem:
when executing code when reaches
return connection.query<t>(query); and causes following error:
fatal error encountered during command execution.
when debugging checked , both parameters , values have 1 value is:
@localization counter,1
the solution found instead of using addwithvalue using loop , replacing every @parameter value letting method this:
public static ienumerable<t> executequerywithparameters<t>(string query, string connectionstring, string[] parametersarray, string[] valuesarray) { using (mysqlconnection connection = new mysqlconnection(connectionstring)) { (int = 0; < parametersarray.length; i++) { //replace @parameters query = query.replace(parametersarray[i], valuesarray[i]); } connection.open(); return connection.query<t>(query); } } maybe isn't best method no 1 answering question , solution come with.
wiki
Comments
Post a Comment