在UPDATE期间未处理MySqlException

时间:2017-04-06 01:33:51

标签: c# mysql

请帮助我,当我更新时出现错误!

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();

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

2 个答案:

答案 0 :(得分:1)

如果是您的第二个查询,则需要使用sql2.ExecuteNonQuery();代替sql2.ExecuteReader();

  

ExecuteNonQuery()执行目录操作(例如,   查询数据库的结构或创建数据库对象   如表),或更改数据库中的数据而不使用   通过执行UPDATE,INSERT或DELETE语句来实现DataSet。该方法将返回受影响的行数。

ExecuteReader()返回一个可以遍历整个结果集的对象。

注释中提到的一个syou,错误不是因为ExecuteNonQuery,而是因为之前的Datareader,所以你必须在处理更新之前关闭它们。

答案 1 :(得分:0)

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

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

https://www.codeproject.com/Articles/43438/Connect-C-to-MySQL