2014-01-29 1 views
0

오류를 알 수 없습니다. 변수 SqlDataReader에 데이터가 없습니다. 변수 SqlDataReader에서 검색 한 데이터는 Label2에 저장됩니다.데이터가 SqlDataReader에 들어오지 않습니다.

코드 :

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection("Server=(local);Database=records;User Id=sasfddsf;Password=12345"); 
     try 
     { 
      con.Open(); 
      SqlCommand cmd = new SqlCommand("select id,name,referencename from records where name = '" + Label1.Text.ToString() + "'", con); 

      var SqlDataReader = cmd.ExecuteReader(); 
      while (SqlDataReader.Read()) 
      { 
       Label2.Text += Convert.ToString(SqlDataReader["name"]) + Convert.ToString(SqlDataReader["referenceName"]); 
      } 
      SqlDataReader.Close(); 
     } 
     catch (Exception e1) 
     { 
      Label2.Text = "Error: " + e1.Message; 
     } 
     finally 
     { 
      con.Close(); 
     } 
    } 
} 
+1

는 SQL 쿼리가 주어진'Label1.Text' 값을 가진 모든 행을 반환합니까 시도? – ekad

+2

sql-query를 연결하여 사람들에게 sql-injection을 초대합니다. SQL 매개 변수를 대신 사용하십시오. –

+1

그리고 무엇이 오류입니까? –

답변

1

는이

 SqlCommand cmd = new SqlCommand("select id,name,referencename from records where name = @TextBoxName", con); 
     com.Parameters.AddWithValue("@TextBoxName",Label1.Text.ToString()); 
     SqlDataReader rdr = cmd.ExecuteReader(); 
     while (rdr.Read()) 
     { 
      Label2.Text += Convert.ToString(rdr["name"]) + Convert.ToString(rdr["referenceName"]); 
     } 
     rdr.Close(); 
+2

나는 이것이 왜 즉시 upvoted되는지 전혀 모른다. 어떻게 다른가? –

+0

@TimSchmelter : 매개 변수가 차이를 만듭니다. –

+0

@ JohnSaunders : 첫 번째 버전에는 매개 변수가 없었습니다. OP와 다른 버전 이름을 사용하는 것과 동일한 버전이었습니다. 또한 매개 변수를 사용하는 것이 좋은 조언이라 할지라도이 문제가 왜 해결되는지 명확하지 않습니다. –

관련 문제