Joh*_*0te 5 .net c# t-sql ado.net sql-server-2008-r2
我需要向数据库发送命令.我知道受影响的表中所有字段的名称和数据类型,我需要使用它们生成命令.我唯一的问题是确定哪些列值是TSQL中需要引号的数据类型 - 例如,如果字段是一个Hello World类型的字符串varchar,我需要引用它,但如果它是一个int,5,我不会需要引用它.
我可以使用类似下面的代码,但它似乎非常低效.有人能指出我这样做的更好方法 - 可能使用内置的SQL服务器或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;
}
Run Code Online (Sandbox Code Playgroud)
您可以引用所有内容,并将由数据库本身转换为适当的数据类型.
但那是不正确的.相反,您需要使用参数化查询并按原样发送值:
command.Parameters.AddWithValue("@name", value);
Run Code Online (Sandbox Code Playgroud)
要么
command.Parameters.Add("@name", type, size).Value = value;
Run Code Online (Sandbox Code Playgroud)
请参阅MSDN.
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |