2010-05-10 47 views
1

我真的做任何人都可以幫我選擇查詢的語法嗎?

string sql = "select * from publisher where title like "'"+tbproperty.text+"; 

但它`不工作!

問候..

+0

會發生什麼 - 它是如何失敗? – Mark 2010-05-10 05:09:52

+0

有關信息,您在文字後缺少結尾引號,但大部分答案和評論都告訴您; **使用參數**。 – 2010-05-10 05:16:32

回答

0

修正..

string sql = "select * from publisher where title like '" + tbproperty.text + "'"; 
+0

嘿聽..我有我的功能在我的班,但tbproperty不顯示在我的課堂.. ??我該怎麼做 ?? – Azka 2010-05-10 05:11:26

+0

請把你的代碼放在這裏,以便我們分析和檢查。 – 2010-05-10 05:12:20

+0

@Azka - 只有你知道'tbproperty'存在的位置;如果你正在獨立於UI(你應該)做你的數據訪問,那麼你必須將所需的標題作爲參數傳遞給你的方法。 – 2010-05-10 05:13:54

9

使用SqlParameter

SqlCommand cmd = new SqlCommand("select * from publisher where title like @title"); 
cmd.Parameters.AddWithValue("@title", tbProperty.Text); 

如果您需要添加更多的參數,然後執行以下操作(如:輸出參數):

SqlParameter param = new SqlParameter("@param ", SqlDbType.NVarChar, 250) { Direction = ParameterDirection.Output }; 
cmd.Parameters.Add(param); 

這意味着您不需要構建字符串本身並停止SQL注入。

+3

+1希望我能+10000你的答案!!始終總是(並且沒有例外)使用參數化查詢。 – 2010-05-10 05:12:19

4

隨着LIKE,如果你希望開始/結束你需要一些通配符如'%'比賽,我假設用戶不加入那些;但是 - 重要don't concatenate user input。永遠。你想要的東西,如:

sql = "select * from publisher where title like @arg"; 

隨着@arg定義爲參數,用值是這樣的:

cmd.Parameters.AddWithValue("@arg", "%" + tbproperty.text + "%"); 
相關問題