我正在研究Webmatrix中的數據庫應用程序。我有一個應該更新數據庫中的記錄的cshtml文件。如果我爲SQL命令使用字符串連接,一切正常,但我知道這並不安全。所以,我試圖改用參數。但是當我這樣做時,我得到了一個SQL解析錯誤。當我使用參數時,爲什麼會出現SQL解析錯誤?
作品:
@{
string dbName = Request["db"];
string tble = Request["t"];
string idName = Request["idn"];
string id = Request["id"];
string field = Request["f"];
string value = Request["v"];
var db = Database.Open(dbName);
var result = db.Execute("UPDATE ["+tble+"] SET ["+field+"]='"+value+"' WHERE ["+idName+"]='"+id+"'");
<text>Result: @result</text>
}
導致錯誤:
@{
string dbName = Request["db"];
string tble = Request["t"];
string idName = Request["idn"];
string id = Request["id"];
string field = Request["f"];
string value = Request["v"];
var db = Database.Open(dbName);
var result = db.Execute("UPDATE @0 SET @[email protected] WHERE @[email protected]",tble,field,value,idName,id);
@*var result = db.Execute("UPDATE ["+tble+"] SET ["+field+"]='"+value+"' WHERE ["+idName+"]='"+id+"'");*@
<text>Result: @result</text>
}
表和列名不能作爲參數傳遞 – Nino
請不要這樣做!查詢是你自己的地方。您的查詢是在選擇新娘(或新郎,必須養成這種習慣)之前預訂婚禮的確切程序。 – bbsimonbb
想要參數化表和列名稱通常是破損數據模型的標誌。相同「類型」的數據應該存儲在* one *表中的* one *列中,而不是分散在多個表和列中。通常情況下,您會發現您希望針對此數據編寫查詢,這些數據不是直接的,因爲數據是分散的(必須在查詢中重命名多個表和列)並且某些* data *已被嵌入放入這些表格和列*名*中,當它應該被建模*爲數據*時。 –