我需要验证以编程方式创建的 SQL 列的名称...
应该有2个验证规则:
- 名称不应是 C#关键字
- 名称不应是 SQL 关键字( SQL Server 2008 R2)
第一条规则的解决方案很好:
CSharpCodeProvider类具有IsValidIdentifier方法,这使得验证的实现变得容易。
(前任:
string myColumnName = "blabla";
var isValid = _cSharpCodeProvider.IsValidIdentifier(myColumnName);
)
第二条规则的解决方案有点冗长:
我发现进行谷歌搜索的唯一方法是从MSDN 中获取关键字 - 保留关键字 (Transact-SQL) SQL Server 2008 R2
构建一个将返回所有这些关键字的字符串 [] 属性...
(前任:
public static class SqlReservedKeywords {
public static string[] SqlServerReservedKeywords {
get { return SqlServerKeywords; }
}
private static readonly string[] SqlServerKeywords = new[] {
"ADD","EXISTS","PRECISION",
//. . .
"EXEC","PIVOT","WITH",
"EXECUTE","PLAN","WRITETEXT"
};
}
//外部代码
var isValid = SqlReservedKeywords.SqlServerReservedKeywords.Contains(myColumnName);
)
你能告诉我关于第二个验证规则的实施吗?这是一个好习惯吗?也许它存在另一种实现方式,我没有通过谷歌搜索找到......