我需要向数据库发送命令。我知道受影响表中所有字段的名称和数据类型,我需要使用它们来生成命令。我唯一的问题是确定哪些列值属于TSQL中需要用引号引起来的数据类型-例如,如果该字段是Hello World
类型的字符串varchar
,则需要用引号引起来,但是如果它是int
,则5,我不需要引用它。
我可以使用类似以下代码的内容,但效率似乎很低。有人可以指出我这样做的更好方法-可能使用内置的SQL Server或C#功能吗?
public string QuoteStringIfDatatypeRequires(string columnName)
{
if (DataTypes[columnName].Contains("date") || DataTypes[columnName].Contains("time") ||
DataTypes[columnName].Contains("char") || DataTypes[columnName].Contains("text") ||
DataTypes[columnName].Contains("binary") || DataTypes[columnName].Contains("image"))
{
return "'" + columnName + "'";
}
return columnName;
}
最佳答案
您可以引用所有内容,并且数据库本身会将其转换为适当的数据类型。
但这将是不正确的。相反,您需要使用参数化查询并按原样发送值:
command.Parameters.AddWithValue("@name", value);
或者
command.Parameters.Add("@name", type, size).Value = value;
参见MSDN。
关于c# - 确定哪些SQL数据类型需要用引号引起来?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10235507/