2017-11-23 91 views
0

私はC#を初めて使いました。現在、私はデバッグなしでこのプログラムを実行しているときにいくつか問題があります。"ExecuteScalar:接続プロパティが初期化されていません。"

これは私のプロジェクトのログインページです。サービスベースのデータベースを作成しましたが、データベースにあるテーブル 'テーブル'のユーザー名とパスワードであるデータに接続したいと考えています。 しかし、「ExecuteScalar:Connectionプロパティが初期化されていません」という問題が発生しました。私はこのコードを実行しています。

誰もがこれを手伝ってくれますか?

private void button1_Click(object sender, EventArgs e) 
    { 
     SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=c:\users\hp\documents\visual studio 2015\Projects\PersonalFinancialSoftware\PersonalFinancialSoftware\Login.mdf;Integrated Security=True"); 
     SqlCommand cmd = new SqlCommand(); 

     cmd.CommandText = "SELECT COUNT (*) FROM Table where UserID = @userid AND Password = @password"; 
     cmd.Parameters.AddWithValue("@userid", textBox1.Text); 
     cmd.Parameters.AddWithValue("@password", textBox2.Text); 
     object result = cmd.ExecuteScalar(); 

     conn.Open(); 
     string useridlogin = Convert.ToString(result); 
     conn.Close(); 

     if (useridlogin != " ") 
     { 
      Home_Page homepage = new Home_Page(); 
      homepage.Show(); 
     } 
     else 
     { 
      MessageBox.Show("Invalid ID or password, please try again!", "Info", MessageBoxButtons.OK); 
     } 
    } 

答えて

1

SQLデータベース接続を開く前にExecuteScalarメソッドを実行したことがわかりました。エラーが発生しています。

ExecuteScalarメソッドの前に接続を開きます。

private void button1_Click(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=c:\users\hp\documents\visual studio 2015\Projects\PersonalFinancialSoftware\PersonalFinancialSoftware\Login.mdf;Integrated Security=True"); 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand(); 

    cmd.CommandText = "SELECT COUNT (*) FROM Table where UserID = @userid AND Password = @password"; 
    cmd.Parameters.AddWithValue("@userid", textBox1.Text); 
    cmd.Parameters.AddWithValue("@password", textBox2.Text); 
    object result = cmd.ExecuteScalar(); 

    string useridlogin = Convert.ToString(result); 
    conn.Close(); 

    if (useridlogin != " ") 
    { 
     Home_Page homepage = new Home_Page(); 
     homepage.Show(); 
    } 
    else 
    { 
     MessageBox.Show("Invalid ID or password, please try again!", "Info", MessageBoxButtons.OK); 
    } 
} 
0

あなたがエラーを取得しているthatsの、あなたが接続を見つけるあなたのコードのSQLクエリでは、このコード

private void button1_Click(object sender, EventArgs e) 
    { 
     SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=c:\users\hp\documents\visual studio 2015\Projects\PersonalFinancialSoftware\PersonalFinancialSoftware\Login.mdf;Integrated Security=True"); 
     SqlCommand cmd = new SqlCommand(); 
     conn.Open(); 
     cmd.CommandText = "SELECT COUNT (*) FROM Table where UserID = @userid AND Password = @password"; 
     cmd.Parameters.AddWithValue("@userid", textBox1.Text); 
     cmd.Parameters.AddWithValue("@password", textBox2.Text); 
     object result = cmd.ExecuteScalar(); 

     string useridlogin = Convert.ToString(result); 
     conn.Close(); 

     if (useridlogin != " ") 
     { 
      Home_Page homepage = new Home_Page(); 
      homepage.Show(); 
     } 
     else 
     { 
      MessageBox.Show("Invalid ID or password, please try again!", "Info", MessageBoxButtons.OK); 
     } 
    } 

を試してみてくださいは、ExecuteScalar befor接続を開く必要がありますは、ExecuteScalar後のオープン接続を持っています。しかし、これはExecuteScalarの後で開いているので、これがエラーになります。

関連する問題