c# - 如何将参数传递给 MySQL OdbcCommand 并且仅当谓词匹配时如何更新?

标签 c# mysql odbc

问题 1 - 如何正确地将参数传递给 MySQL OdbcCommand?

我是 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 检查记录是否已更改(结果 > 0)或没有更改(结果 = 0)。如果没有更改,则电子邮件和用户名不匹配。 (警告:如果您传入错误的用户 ID,这也会返回结果 = 0!)

HTH 亚历克斯

关于c# - 如何将参数传递给 MySQL OdbcCommand 并且仅当谓词匹配时如何更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7976584/

相关文章:

ms-access - 错误 [HY000] 一般错误 : Invalid file dsn ''

C# 错误消息 "Property can not be assigned to -- it is read only."

c# - 谷歌翻译错误

c# - MSChart X 和 Y 轴标签在原点重叠

mysql - 在索引上覆盖 SELECT 给出了 using where;使用索引;而不是只使用索引;

ms-access - 为大查询问题连接 Simba ODBC 驱动程序 - SSL 验证

c# - 覆盖/隐藏显式实现的接口(interface)方法

php - 如何在一个 MySQL 查询中选择 2 个连接表?

php - 将 PHP 5.6 代码迁移到 PHP 7.3 的正确步骤

excel - 未找到数据源名称,未指定默认驱动程序”。获取连接失败 "DestinationConnectionOLEDB"