2012-12-21 75 views
0

我正在處理.cshtm頁面和服務器端編碼我正面臨異常 無法將類型int隱式轉換爲string。代碼如下無法在.cshtm文件中將類型'int'隱式轉換爲'string'

@{ 
    var id = Request.QueryString["Id"]; //page.cshtml?id=5 
    var data=""; 
    var query = "Select * from products where id="+id; 
    data = db.Execute(query).toString(); 
} 

字符串」不包含定義‘名稱’,並沒有擴展方法‘名稱’接受一個類型的第一個參數‘弦’可以找到(是否缺少using指令或程序集參考?)

現在我面臨這個例外。

+0

爲 「ID」 int或字符串?它是數據庫中的一個int或一個字符串? – PhoenixReborn

+0

'db'是什麼類型? –

+0

Id是整數... – Billz

回答

0

你正在嘗試做的是成熟與SQL注入的可能性。

您想使用SqlCommand並使用SqlParameter來防止注射。

這種方法你也不必擔心轉換類型,ADO.Net會爲你處理它。

假設你正在使用SqlConnection連接到一個MSSQL數據庫:

var id = Request.QueryString["Id"]; 
var query = "Select * from products where [email protected]"; 
var data = ""; 

using (SqlCommand command = new SqlCommand(query, db)) 
{ 
    command.Parameters.Add(new SqlParameter("@id", id)); 

    data = command.ExecuteScalar().ToString(); 
} 
+0

我該如何使用?請幫我或提供示例代碼 – Billz

+0

無法找到類型或名稱空間名稱'SqlCommand'(缺少using指令還是程序集引用?) – Billz

+0

需要導入System.Data.Sql和System.Data.SqlClient找到SqlCommand – Melanie

0

假設db.Execute(query)結果是一個整數,嘗試調用ToString方法:

db.Execute(query).ToString(); 
+0

字符串'不包含'名稱'的定義和沒有擴展方法'名稱'接受類型'字符串的第一個參數'可以找到(你是否缺少使用指令或程序集引用?) – Billz

+0

現在我面臨這個問題來訪問結果。 – Billz

+0

似乎完全是一個不同的問題。 「名稱」一詞在您的代碼片段中甚至沒有。 –

2

如果你的變量ID int類型的,你不能把它添加到string沒有轉換成字符串第一:id.ToString();

+0

多餘的'Object.ToString()'調用值類型= \ –

0

嘗試:

var query = "Select * from products where id="+id.ToString(); 
0
public int Execute(string commandText, params Object[] args) 

可變數據是字符串,但執行返回INT

var query = "Select * from products where id="+id; 
int data = db.Execute(query); 
//or string data = Convert.ToString(db.Execute(query), formatProvider); 
0

您可以使用ToString()到整數轉換爲字符串。

就個人而言,我更喜歡下面的,因爲它似乎提供更多的控制:

var query = String.Format("Select * from products where id={0}", id); 
相關問題