0

ログイン関数を作成するために、データベースを認証しようとしています。ボタンを押すたびに、次のエラーが表示されます:System.InvalidOperationException:接続が開いていません。MySql.Data.MySqlClient.MySqlConnection.Throw(Exception ex)at MySql.Data.MySqlClient.MySqlCommand.Throw(Exception ex)at MySql.Data.MySqlClient.MySqlCommand.Prepare()at start.CheckUserLogin(String username、String password )c:\ Users \ RARES \ Documents \ Visual Studio 2010 \ WebSites \ tem1 \ start.aspx.cs:line46にあります

データを読み取り、ユーザーとパスがThextBoxのテキストと同じであるかどうかを確認する方法を教えてください。

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        String sCon = "SERVER=localhost;DATABASE=sd_tema1;UID=root;";
        MySqlConnection con = new MySqlConnection(sCon);

        if (CheckUserLogin(Label2.Text, Label3.Text))
        {
            Response.Redirect("login.aspx");
        } 

    }
    catch (Exception ex)
    {
        Label1.Text = ex.ToString();
    }
}

public Boolean CheckUserLogin(string username, string password)
{
    try
    {
        String sCon = "SERVER=localhost;DATABASE=sd_tema1;UID=root;";
        MySqlConnection con = new MySqlConnection(sCon);

        String query = "Select * from users where username= ?userName and password= ?passWord";
        MySqlCommand cmd = new MySqlCommand(query,con);
        cmd.Parameters.Add("?userName", TextBox1.Text);
        cmd.Parameters.Add("?passWord", TextBox2.Text);
        cmd.Prepare();
        MySqlDataReader print = cmd.ExecuteReader();
        bool read = print.Read();
        if(username.Equals(print.GetString("1")) && password.Equals(print.GetString("2"))) return true;
    }
    catch (Exception ex)
    {
        Label1.Text = ex.ToString();
    }
    return false;
}
4

1 に答える 1

1

ExecuteReaderメソッドを呼び出す前に接続を開かなかった。con.Openに電話してください。問題は解決されます。

于 2012-10-28T15:18:05.177 に答える