2014-01-29 64 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-parameters。 –

+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用於讀者的變量名不同。此外,即使使用參數是一個好建議,也不清楚爲什麼這能解決問題。 –