MySql更新错误。c#
ionline-类,字符串mynameMySql更新错误。c#,c#,mysql,C#,Mysql,ionline-类,字符串myname private static void SetOnlineStatus(PacketHeader header, Connection connection, ionline message) { Console.WriteLine("Check online: " + message.myname); MySqlCommand mycmd = new MySqlCommand(); mycmd.Co
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”。我的查询中有什么不正确?当数据读取器打开时,其连接正忙于为读取器提供服务。
该连接不能用于对数据库进行其他操作。
不过你应该得到一个例外 如果您的第一个查询返回零或一行,那么您可以使用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();
}
McConnection可能是已处理的与您的查询无关的东西。您能否发布所有代码,包括声明McConnection的部分?您能否提供更多信息?i、 代码,生成异常的行…为什么?执行其他sql查询!请澄清这个问题。您粘贴的错误不清楚。添加更多信息,否则您的问题将被否决并关闭