2017-06-17 5 views
-1

私は初心者ですが、asp.netを取得しましたが、System.Data.dllで例外が発生しましたが、System.Data.dllで例外が発生しましたが、 Microsoft Visual Studioデータベースから値を選択しようとすると、コードエラーが発生します。エラーは以下con.Open()ラインSQL例外は接続オープン時にユーザーコードによって処理されませんでした

にあった私のコードです:

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C: \Users\Ng\Documents\Visual Studio 2015\Projects\Assignment6\Assignment6\App_Data\photoCompetition.mdf;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"); 

    protected void Button1_Click(object sender, EventArgs e) 
      { 
       con.Open(); 
       SqlCommand cmd = new SqlCommand("SELECT * FROM User WHERE [email protected] and [email protected]", con); 
       cmd.Parameters.AddWithValue("@username", emailtext.Text); 
       cmd.Parameters.AddWithValue("@word", passwordtext.Text); 
       SqlDataAdapter sda = new SqlDataAdapter(cmd); 
       DataTable dt = new DataTable(); 
       sda.Fill(dt); 
       int i = cmd.ExecuteNonQuery(); 
       con.Close(); 

       if (dt.Rows.Count > 0) 
       { 
        Response.Redirect("Default.aspx"); 
       } 
       else 
       { 
        lblMsg.Text = "Your username and word is incorrect"; 
        lblMsg.ForeColor = System.Drawing.Color.Red; 
       } 
      } 
+0

を持つ:ユーザー\ \ン\ドキュメントのVisual Studio 2015 \プロジェクト\ \ Assignment6 \ Assignment6 \ App_Data \ photoCompetition.mdf'?最初に削除してください。 'SqlConnection'で' using'キーワードを使って適切に処理してください。 –

+0

'try ... catch'ブロックの中にコードをラップして、何が問題なのかチェックしましたか? –

+0

私はスペースを削除しましたが、今はsda.Fill(dt)行にエラーがあります... –

答えて

-1

だからあなたの最初の問題は、あなたのSQLの接続文字列にスペースを持っていたことです。今

C: \Users\Ng\Documents\Visual Studio 2015\Projects\Assignment6\Assignment6\App_Data\photoCompetit‌​ion.mdf

あなたのクエリが有効になりますし、テーブルとカラムと仮定すると、あなたが実行しようとしているSQLクエリに問題がある、存在しているため。ここには2つのオプションがあります。

  1. 文字列

    SqlCommand cmd = new SqlCommand("SELECT * FROM User WHERE email='@username' and password='@word'", con); 
    
  2. 使用SqlParameterCollection.Add Method (String, SqlDbType, Int32)としてそれを示すために、単一引用符を使用してパラメータを囲みます。また

cmd.Parameters.Add("@username", SqlDbType.Text).Value = emailtext.Text; 
cmd.Parameters.Add("@word", SqlDbType.Text).Value = passwordtext.Text; 
は、閉じることを忘れないでください、あなたの SqlConnectionなぜC `中にスペースがある con.Close();

+0

私は自分のコードを変更しましたが、sda.fill行にはまだメッセージにエラーがあります追加情報:キーワード 'User ' –

+0

コマンドは次のように設定する必要があります: 'SqlCommand cmd = new SqlCommand(" SELECT * FROM [ユーザ] WHERE email = @ユーザ名とパスワード= @ word "、con);'引用符は必要ありません。 – mjwills

+0

@mjwillsあなたは明らかに私が言ったことを得ていない。運が良かった。 –

関連する問題