Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新期间未处理MySqlException_C#_Mysql - Fatal编程技术网

C# 更新期间未处理MySqlException

C# 更新期间未处理MySqlException,c#,mysql,C#,Mysql,请帮帮我,当我更新e时出错 bdDataSet = new DataSet(); //Define string de conexão bdConn = new MySqlConnection("Server=xxxxxxxxx;Database=xxxxxxx;Uid=xxxxxxx;Pwd=xxxxxxxx"); var command = bdConn.CreateCommand(); //Abre conecção try { bdConn.Open(); } catch {

请帮帮我,当我更新e时出错

bdDataSet = new DataSet();
//Define string de conexão
bdConn = new MySqlConnection("Server=xxxxxxxxx;Database=xxxxxxx;Uid=xxxxxxx;Pwd=xxxxxxxx");
var command = bdConn.CreateCommand();
//Abre conecção
try
{
    bdConn.Open();
}
catch
{
    MessageBox.Show("Impossível estabelecer conexão");
}
//Verifica se a conexão está aberta
if (bdConn.State == ConnectionState.Open)
{
    //ENCONTRA USUARIO  
    command.CommandText = "SELECT * FROM users WHERE email=@email and senha=@senha";
    command.Parameters.Add("@email", MySqlDbType.VarChar).Value = textBoxUser.Text;
    command.Parameters.Add("@senha", MySqlDbType.VarChar).Value = textBoxPass.Text;
    MySqlDataReader reader = command.ExecuteReader();
    if (reader.Read())
    {
        string email = reader.GetString("email");
        if (Convert.IsDBNull(reader["hd_id"]))
        {
            //ADD HD ID NO D


            MySqlCommand sql2 = new MySqlCommand("UPDATE users SET hd_id=@hdid WHERE email=@email", bdConn);
            sql2.Parameters.Add("@hdid", MySqlDbType.VarChar).Value = HardDrive.GetHDDSerialNo();
            sql2.Parameters.Add("@email", MySqlDbType.VarChar).Value = email;
            sql2.ExecuteReader();
        }
        if (reader.GetString("hd_id") != null)
        {
            MessageBox.Show("Tem HD");
        }
    }
    else
    {
        MessageBox.Show("Usuários e/ou Senha Invalido");
    }

    bdConn.Close();
}
所以我在这一行有错误

sql2.ExecuteReader();

请帮我解决这个问题!!对不起,我的英语我来自巴西。我已经尽了一切努力来做这个查询,但我一点也不希望你们中的任何人能帮助我

在这里,对于第二个查询,您需要使用
sql2.ExecuteNonQuery()而不是
sql2.ExecuteReader()

执行目录操作(例如, 查询数据库结构或创建数据库对象,如 作为表),或在不使用 通过执行UPDATE、INSERT或DELETE语句创建数据集。并且该方法将返回受影响的行数

而返回一个可以遍历整个结果集的对象


您在评论中提到的一个SY错误不是因为ExecuteOnQuery,而是因为以前的Datareader,因此您必须在处理更新之前关闭它们。

您使用的是Datareader。Datareader将保持连接打开,直到其关闭。如果将连接用于数据读取器,则不能将其用于执行非查询

最好为更新创建一个新的连接和命令对象


如果您解释了海报为什么要这样做,那么这将是一个更好的答案,因为它提供了信息,而不仅仅是复制/粘贴解决方案。这将有助于海报在将来避免同样的错误。我已经尝试过了,但它也不起作用!请参见此图:错误消息确切地告诉您要做什么:关闭以前通过
DataReader
建立的连接。什么代码可以实现我想要的功能?如何实现?你能帮我吗?我需要第行返回的值。任何时候你“得到错误”你必须告诉我们错误是什么。错误是什么??