【问题标题】:MySql UPDATE error. c#MySql 更新错误。 C#
【发布时间】:2013-06-20 20:18:07
【问题描述】:

ionline - 类,字符串 myname

private static void SetOnlineStatus(PacketHeader header, Connection connection, ionline message)
    {
        Console.WriteLine("Check online: " + message.myname);
        MySqlCommand mycmd = new MySqlCommand();
        mycmd.CommandText = "SELECT * FROM users WHERE username = ?user";
        mycmd.Connection = mconnection;
        mycmd.Parameters.AddWithValue("user", message.myname);
        MySqlDataReader Reader = mycmd.ExecuteReader();

        while (Reader.Read())
        {
            Console.WriteLine("Check online: " + message.myname+" "+GetDBString("username",Reader));
            MySqlCommand mycmd2 = new MySqlCommand();
            mycmd2.CommandText = "UPDATE users SET online = 0 WHERE userid = @user2";
            mycmd2.Parameters.AddWithValue("@user2", Reader.GetInt32("userid"));
            mycmd2.Connection = mconnection;
            Console.WriteLine(mycmd2.ExecuteNonQuery().ToString());
        }


    }

Mysql 请求“mycmd2”未执行。我的查询中有什么不正确的?

【问题讨论】:

  • mconnection 可能是与您的查询无关的东西。
  • 你能贴出你所有的代码,包括声明mconnection的部分吗?
  • 您能提供更多信息吗?即代码,生成异常的行...
  • 有什么用?执行其他sql查询!
  • 请清楚问题。您粘贴的错误不清楚。添加更多信息,否则您的问题将被否决并关闭

标签: c# mysql


【解决方案1】:

当 DataReader 打开时,它的连接正忙于为阅读器提供服务。
该连接不能用于对数据库进行其他操作。
不过你应该得到一个例外。

如果您的第一个查询返回零或一行,那么您可以使用 ExecuteScalar 方法简化您的代码,而无需使用 MySqlDataReader

    Console.WriteLine("Check online: " + message.myname);
    MySqlCommand mycmd = new MySqlCommand();
    mycmd.CommandText = "SELECT userid FROM users WHERE username = ?user";
    mycmd.Connection = mconnection;
    mycmd.Parameters.AddWithValue("user", message.myname);
    object result = mycmd.ExecuteScalar();
    if(result != null)
    {
        int userID = Convert.ToInt32(result);
        MySqlCommand mycmd2 = new MySqlCommand();
        mycmd2.CommandText = "UPDATE users SET online = 0 WHERE userid = @user2";
        mycmd2.Parameters.AddWithValue("@user2", userID);
        mycmd2.Connection = mconnection;
        mycmd2.ExecuteNonQuery();
    }

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 2013-03-12
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2011-05-03
    • 2013-06-12
    • 1970-01-01
    相关资源
    最近更新 更多