2013-03-18 93 views
4

我對此很新。可能有一些明顯我完全缺少的,但是......在SQL查詢中使用C#變量

當進行SQL查詢(ASP.NET與C#)我能得到這個:

var query = db.Query("SELECT * FROM pageinfo WHERE pageID = 1"); 

來工作的,但這樣的:

var pageID=1; 
var query = db.Query("SELECT * FROM pageinfo WHERE pageID = @pageID"); 

沒有。

基本上,我想要做的就是在查詢中放置一個變量。有這種特殊的語法嗎?

謝謝。

+0

db是什麼類? – qujck 2013-03-18 11:41:16

+0

@ user2124495你將最終在Sql注入。請使用參數化查詢 – 2013-03-18 11:43:07

回答

14

是否有一些特殊的語法來做到這一點?

是的,使用SQLParameter

喜歡的東西:

SqlCommand cmd = new SqlCommand("SELECT * FROM pageinfo WHERE pageID = @pageID"); 
cmd.Parameters.AddWithValue("@pageID", 2); 

db.Query似乎是自己的實現當前的方法。您可以重載該方法以接收SqlParameter的列表,然後將這些參數添加到您的命令中。這會阻止你從SQL Injection

+0

謝謝!得到這個工作,但現在我沒有'查詢'變量,我將如何得到結果? – user2124495 2013-03-18 13:05:48

+0

您可以使用[SqlDataReader讀取數據](http://csharp-station.com/Tutorial/AdoDotNet/Lesson04)或[填充數據集/數據表](http://msdn.microsoft.com/en-us /library/bh8kx08z.aspx)從命令 – Habib 2013-03-19 04:23:16

0
var pageID=1; 
var query = db.Query("SELECT * FROM pageinfo WHERE pageID = '"+ PAGEid +"'); 
+0

**不要**。閱讀更多關於[SQL注入](http://en.wikipedia.org/wiki/SQL_injection) – Habib 2013-03-18 11:54:11

+0

謝謝你的傳說... – 2013-03-18 11:55:21

+0

+1 ........ – 2013-03-18 11:55:45