我正在使用C#和.NET 3.5。我需要生成並存儲稍後將在遠程服務器上執行的一些T-SQL插入語句。創建安全的SQL語句作爲字符串
例如,我公司員工的數組:
new Employee[]
{
new Employee { ID = 5, Name = "Frank Grimes" },
new Employee { ID = 6, Name = "Tim O'Reilly" }
}
,我需要用一個字符串數組來結束,這樣的:
"INSERT INTO Employees (id, name) VALUES (5, 'Frank Grimes')",
"INSERT INTO Employees (id, name) VALUES (6, 'Tim O''Reilly')"
我在看一些代碼它使用String.Format創建插入語句,但這並不合適。我考慮過使用SqlCommand(希望做到something like this),但它沒有提供將命令文本與參數組合的方法。
只需要替換單引號並構建字符串就足夠了嗎?
string.Format("INSERT INTO Employees (id, name) VALUES ({0}, '{1}')",
employee.ID,
replaceQuotes(employee.Name)
);
這樣做的時候應該關注什麼?源數據相當安全,但我不想做太多假設。
編輯:只是想指出,在這種情況下,我沒有SqlConnection或任何方式直接連接到SQL Server。這個特殊的應用程序需要生成sql語句並將它們排隊以便在其他地方執行 - 否則我會使用SqlCommand.Parameters.AddWithValue()
AddWithValue是偉大的(我經常使用它),但它可以遭受錯誤的隱式類型轉換,如果不謹慎使用。 – 2008-11-16 00:30:44