如何将参数传递给MySQL OdbcCommand,以及如何仅在谓词匹配时更新



问题1 -如何正确传递参数到MySQL OdbcCommand?

I am new to MYSQL.

我想写更新查询。我曾经这样写过,但是没有用。

private int UpdateUser(ClsUserRegistrationProp ObjUserProp, int IntUesrId)
{
    Int32 Isdone;
    using (OdbcConnection con = new OdbcConnection(ConnStr))
    using (OdbcCommand cmd = new OdbcCommand("UPDATE tblUsers SET FirstName = ?, LastName = ?,UserName = ?,Password = ?,EmailId = ? where UserId= ?", con))
    {
        cmd.CommandType = CommandType.Text;
        cmd.CommandTimeout = 0;
        cmd.Parameters.Add("@UserId", OdbcType.Int).Value = IntUesrId;
        cmd.Parameters.Add("@FirstName", OdbcType.VarChar, 255).Value = ObjUserProp.FirstName;
        cmd.Parameters.Add("@LastName", OdbcType.VarChar, 255).Value = ObjUserProp.LastName;
        cmd.Parameters.Add("@UserName", OdbcType.VarChar, 255).Value = ObjUserProp.UserName;
        cmd.Parameters.Add("@Password", OdbcType.VarChar, 255).Value = ObjUserProp.Password;
        cmd.Parameters.Add("@EmailId", OdbcType.VarChar, 255).Value = ObjUserProp.EmailId;
        con.Open();
        Isdone=cmd.ExecuteNonQuery();            
        con.Close();
        return Isdone;


    }
}

问题2 -如果用户名或电子邮件匹配,我如何更新记录?

我还想检查用户名和电子邮件是否已经存在。如果它们不存在,那么记录将更新

我该怎么做?请帮助! !

参数

如果使用ODBC,则必须将变量命名为@xyz,因此

UPDATE tblUsers SET FirstName = @FirstName, ... WHERE xyz

并添加如下参数

cmd.Parameters.Add("@FirstName", ...)

如果您使用MySQL连接器,SQL应该读取

UPDATE tblUsers SET FirstName = ?FirstName, ... WHERE xyz

并添加如下参数(不带'?'!)

cmd.Parameters.Add("FirstName", ...)

用户名、邮箱检查

基本的方法是对用户名和/或电子邮件执行SELECT操作,然后只有在没有返回结果的情况下才执行更新操作,但是您可以在这样的语句中完成:

UPDATE tblUsers SET ... WHERE UserId= @userId AND Email = @Email AND UserName = @UserName

所以更新将只工作,如果电子邮件和用户名是相同的,你传递到参数

你可以使用ExecuteNonQuery中的int来检查记录是否被更改(result>0)或没有更改(result = 0)。如果没有更改,则电子邮件和用户名不匹配。(警告:如果您传入错误的用户id,这也将返回result = 0!)

HTH亚历克斯

您是否需要以下内容:

UPDATE tblUsers 
SET FirstName = @Firstname, LastName = @LastName,UserName = @UserName,Password = @Password,EmailId = @EmailId
WHERE UserId= @userId AND NOT EXISTS (
    SELECT * FROM tblUsers WHERE UserName=@UserName AND EmailId=@EmailId 
 )

最新更新