C#ASP Dot Net 4.5使用MySQL编写了语句
本文关键字:语句 MySQL 使用 Dot Net C#ASP | 更新日期: 2023-09-27 18:24:58
My class CRUD有以下方法:
public bool dbQuery(string sql,string[] paramList= null)
{
bool flag = false;
try
{
connect();
cmd = new MySqlCommand(sql,con);
cmd.Prepare();
if(paramList != null)
{
foreach(string i in paramList){
string[] valus = i.Split(',');
string p = valus[0];
string v = valus[1];
cmd.Parameters.AddWithValue(p,v);
}
}
if (cmd.ExecuteNonQuery() > 0)
{
flag = true;
}
}
catch (Exception exc)
{
this.error(exc);
}
finally
{
try
{
closeCon();
}
catch (Exception excf)
{
this.error(excf);
}
}
return flag;
}
我通过以下方式发送查询:
string sql = "SELECT * FROM dept_login WHERE (user_email = ?user_email OR user_cell = ?user_cell ) AND userkey = ?userkey";
string[] param = new string[] {
"'"?user_email'",'""+ userid.Text.ToString()+"'"" ,
"'"?user_cell'",'""+ userid.Text.ToString()+"'"" ,
"'"?userkey'",'""+ userkey.Text.ToString()+"'""
};
if (db.dbQuery(sql, param))
{
msg.Text = "Ok";
}
else
{
msg.Text = "<strong class='text-danger'>Authentication Failed</strong>";
}
但它说
Parameter "?user_email" must be defined"
我做错了什么?有没有最好的方法将其与参数一起使用来搜索、插入、更新或删除MySQL数据库中的记录。我使用的是Visual Studio 2015和Dot-Net Framework 4.5,windows 10和64位MySQL Server 5.6.21。
当您将此值传递给dbQuery()
方法时:
"'"?user_email'",'""+ userid.Text.ToString()+"'""
它最终将这样的东西传递给AddWithValue()
:
cmd.Parameters.AddWithValue("'"?user_email'"", "'"123'"");
请删除转义引号,然后重试。
string[] param = new string[] {
string.Format("{0},{1}", "?user_email", userid.Text),
string.Format("{0},{1}", "?user_cell", userid.Text),
string.Format("{0},{1}", "?userkey", userkey.Text)
};
我已经将失败的数组更改为以下内容:
string[] param = new string[] {
"?user_email,"+ userid.Text.ToString(),
"?user_cell,"+ userid.Text.ToString(),
"?userkey,"+ userkey.Text.ToString()
};
@Grant Winney的答案是正确的,但他在字符串param之外定义了逗号。。。无论如何感谢@Grant Winney