当前位置: 首页 > 编程语言 > C#

使用C#对MySQL进行参数化查询分享

时间:2023-04-10 14:43:53 C#

使用C#对MySQL进行参数化查询?和VAL_@=?;";publicboolread(stringid){level=-1;MySqlCommandm=newMySqlCommand(readCommand);m.Parameters.Add(newMySqlParameter("",val1));m.Parameters.Add(newMySqlParameter("",val2));MySqlDataReaderr=m.ExecuteReader();如果(r.HasRows)level=Convert.ToInt32(r.GetValue(0).ToString());r.Close();返回真;当我运行这个时,我在添加第一个参数时得到了一个IndexOutOfBoundsException。我做错了什么?尝试这个:privateStringreadCommand="SELECTLEVELFROMUSERSWHEREVAL_1=@param_val_1ANDVAL_2=@param_val_2;";publicboolread(stringid){level=-1;MySqlCommandm=newMySqlCommand(readCommand);m.Parameters.AddWithValue("@param_val_1",val1);m.Parameters.AddWithValue("@param_val_2",val2);level=Convert.ToInt32(m.ExecuteScalar());返回真;}protectedvoidLogin1_Authenticate(objectsender,AuthenticateEventArgse){MySqlConnectioncon=newMySqlConnection("server=localhost;UserId=root;database=result;password=1234");con.Open();MySqlCommandcmd=newMySqlCommand("Select*fromuserswhereusername=?usernameandpassword=?password",con);cmd.Parameters.Add(newMySqlParameter("用户名",this.Login1.UserName));cmd.Parameters.Add(newMySqlParameter("password",this.Login1.Password));MySqlDataReaderdr=cmd.ExecuteReader();如果(dr.HasRows==true){e.Authenticated=true;}}您需要在查询中使用命参数。例如:StringreadCommand="SELECTLEVELFROMUSERSWHEREVAL_1=?param1ANDVAL_2=?param2";然后,在实例化MySqlParameter对象时传递参数名称,如下所示:m.Parameters.Add(newMySqlParameter("param1",val1));m.Parameters.AddWithValue("parameter",value)是参数化查询的更好选择。我认为MySql.Data类不支持未命名参数。如果您热衷于使用它们,您可以通过支持此功能的Odbc驱动程序访问MySql数据库。您需要在查询中命名参数:“SELECTLEVELFROMUSERSWHEREVAL_1=@val1ANDVAL_2=@val2;”我选择了参数指示符“@”,但是最新版本的MySql.Data支持“@”和“?”。.然后更新您的参数构造函数以传递正确的参数名称(您不需要在此处包含参数指示符,尽管这样做没有任何区别)。m.Parameters.Add(newMySqlParameter("val1",val1));附言。您已经知道这一点,或者它只是在代码片段中被省略了,但我认为您忘记了在ExecuteReader实例上调用Read。如果你想多次执行sql,那么你应该使用这种方式:conn.Open();cmd.Connection=conn;cmd.CommandText="INSERTINTOmyTableVALUES(NULL,@number,@text)";命令。准备();cmd.Parameters.AddWithValue("@number",1);cmd.Parameters.AddWithValue("@text","One");for(inti=1;我第一次没有“ExecuteNonQuery”只是添加一个带有假值的参数,然后在循环内添加真实值。请看以下链接:https://dev.mysql.com/doc/connector-net/en/connector-net-programming-prepared-preparing.html以上是C#学习教程:使用C#分享参数化查询MySQL的如果整个内容对你有用,需要进一步了解C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: