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。

C#ASP Dot Net 4.5使用MySQL编写了语句

当您将此值传递给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