2017-06-17 14 views
0

私はC#ASP.NETを初めて使用しています。私はログイン部分の値の挿入でデータベースの値をチェックしたいと思いますが、すべてを正しく行いましたが、なぜ同じ値を入力している間は値が正しくないのですか?私のデータベースのもの...どんな考えですか? dtのために私の行数は0を得続ける...私はパラメータを追加すると何か間違っていますか?なぜ結果が返ってくるのですか?

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='@useremail' and password='@password'", con); 
       cmd.Parameters.Add("@useremail", SqlDbType.Text).Value = emailtext.Text; 
       cmd.Parameters.Add("@password", SqlDbType.Text).Value = 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("Membermenu.aspx"); 
       } 
       else 
       { 
        lblMsg.Text = "Your username and password is incorrect"; 
        lblMsg.ForeColor = System.Drawing.Color.Red; 
        emailtext.Text = ""; 
        passwordtext.Text = ""; 
       } 
     } 

答えて

1

あなたは文字列に単一引用符を設定する必要はありませんパラメータを使用すると、クエリ

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.Add("@useremail", SqlDbType.Varchar).Value = emailtext.Text; 
       cmd.Parameters.Add("@password", SqlDbType.Varchar).Value = 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("Membermenu.aspx"); 
       } 
       else 
       { 
        lblMsg.Text = "Your username and password is incorrect"; 
        lblMsg.ForeColor = System.Drawing.Color.Red; 
        emailtext.Text = ""; 
        passwordtext.Text = ""; 
       } 
     } 
+0

私はすでに試してみましたが、このエラーが発生しています。データ型varcharとテキストは、等しい演算子では互換性がありません。 –

+0

電子メールとパスワードの列のデータタイプは何ですか?これはどのデータベースですか? MS SQLServer? – Krishna

+0

はvarcharで、データベースはMSSQL Server –

0

に引用符を削除し、私は変更のみ接続せずに、接続文字列、あなたのコードの仕事で何かのように見えます文字列

public class TestSQLConnection 
{ 
     static string sqlConn = ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString; 
    SqlConnection con = new SqlConnection(sqlConn); 

    public void TestConnection() 
    { 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("SELECT * FROM [Users] WHERE [email protected] and [email protected]", con); 
     cmd.Parameters.Add("@useremail", SqlDbType.VarChar).Value = "David"; 
     cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = "Fawzy"; 
     SqlDataAdapter sda = new SqlDataAdapter(cmd); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 
     con.Close(); 
     if (dt.Rows.Count > 0) 
     { 
      Console.WriteLine("Exist"); 
     } 
     else 
     { 
      Console.WriteLine("Not Exist"); 
     } 
    } 
} 

enter image description here

<connectionStrings> 
<add name="TestDB" connectionString="Data Source=localhost;Initial Catalog=TestDB;User ID=sa;Password=xxxx;Integrated Security=False;" 
    providerName="System.Data.SqlClient" /> 

関連する問題