2012-10-04 89 views
0

我想從web服務返回一個特定的記錄。不過我已經成功做的是,必須到下面的代碼中的所有記錄:如何使用webservice中的條件獲取特定記錄?

SqlConnection con; 
    SqlDataAdapter adap; 
    DataSet ds; 
    [WebMethod] 
    public DataSet Getmember() 
    { 

     con = new SqlConnection(@"Data Source=SQLDOTNET\MSSQLSERVER2008;Initial Catalog=doctor;Persist Security Info=True;User ID=sa;pwd=test123#;"); 
     adap = new SqlDataAdapter("select * from tblusers", con); 
     ds = new DataSet(); 
     adap.Fill(ds, "tblusers"); 
     return ds; 
    } 

現在我想通過EMAILID得到一個特定的記錄,我曾嘗試下面的代碼:

SqlConnection con; 
    SqlDataAdapter adap; 
    DataSet ds; 
    [WebMethod] 
    public DataSet Getmember(String Emailid) 
    { 
     Emailid = "[email protected]"; 
     con = new SqlConnection(@"Data Source=SQLDOTNET\MSSQLSERVER2008;Initial Catalog=doctor;Persist Security Info=True;User ID=sa;pwd=test123#;"); 
     adap = new SqlDataAdapter("select * from tblusers where EmailAddress=" + Emailid, con); 
     ds = new DataSet(); 
     adap.Fill(ds, "tblusers"); 
     return ds; 
    } 

但是這個代碼拋出了以下錯誤:

System.Data.SqlClient.SqlException: Invalid column name '[email protected]'. 

請幫助我..

+0

參見[SQL注入](http://en.wikipedia.org/維基/ SQL_injection)。 –

回答

0

您需要在單引號字符串文字SQL:

"select * from tblusers where EmailAddress = '" + Emailid + "'" 

但是,這讓你到SQL注入攻擊開放,不推薦使用。(檢查是否Emailid被設置爲"' OR 1=1 OR ''='"會發生什麼。)

應指定Emailid作爲參數值來代替:

var cmd = new SqlCommand("select * from tblusers where EmailAddress = ?"); 
cmd.Parameters.Add(Emailid); 
adap = new SqlDataAdapter(cmd, con); 
0

起初,你應該使用SQL參數......不是普通的SQL查詢,以便更好地檢查SQL Parameters

adap = new SqlDataAdapter("select * from tblusers where EmailAddress=" + Emailid, con); 

應更改爲

adap = new SqlDataAdapter("select * from tblusers where EmailAddress='" + Emailid + "'", con); 

你錯過有「'」你查詢..你更好看statement syntax ...

0

不知道這是否會幫助,因爲我還沒有使用C#在一段時間

我認爲,在這部分你的錯誤去

select * from tblusers where EmailAddress=" + Emailid 

嘗試將其更改爲

"select * from tblusers where EmailAddress='" + Emailid + "'" 
相關問題