【发布时间】:2010-09-22 12:53:23
【问题描述】:
我正在使用 C# 和 .NET 3.5。我需要生成并存储一些 T-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 很棒(我经常使用它),但是如果不小心使用它可能会遭受错误的隐式类型转换。
标签: c# .net sql concatenation stringbuilder