我需要验证以编程方式创建的SQL列的 名称…
有两个验证规则:
第一条规则的解决方案很好:
该 CSharpCodeProvider 类有 IsValidIdentifier 方法,这使得验证的实现变得更加容易。
(前任:
string myColumnName = "blabla";
var isValid = _cSharpCodeProvider.IsValidIdentifier(myColumnName);
)
第二条规则的解决方案是冗长的一句:
我发现进行Google搜索的唯一方法是从MSDN中获取关键字-保留关键字(Transact-SQL)SQL Server
2008 R2
要构建一个string []属性,它将返回所有这些关键字…
(前任:
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);
)
您能为我提供有关第二验证规则实施的建议吗?这是一个好习惯吗?也许存在另一种我无法通过谷歌搜索发现的实现方式…
由于有一个可以调用C#的函数,所以真正的问题是如何对SQL保留字进行查找。您在此处实现查找的方式并不是最有效的C#。您应该使用HashSet-
快速未经测试的代码示例如下:
public static class SqlReservedKeywords {
public bool isReserved(string in)
{
return SqlServerKeywords.Contains(in.ToUpper());
}
private static HashSet<string> SqlServerKeywords = new HashSet<string>();
static SqlReservedKeywords()
{
SqlServerKeywords.Add("ADD");
SqlServerKeywords.Add("EXISTS");
SqlServerKeywords.Add("PRECISION");
//. . .
SqlServerKeywords.Add("EXEC");
SqlServerKeywords.Add("PIVOT");
SqlServerKeywords.Add("WITH");
SqlServerKeywords.Add("EXECUTE");
SqlServerKeywords.Add("PLAN");
SqlServerKeywords.Add("WRITETEXT");
}
}
这是一篇不错的文章(由@theburningmonk撰写),显示了使用Contains时HashSet有多快
(对于那些不想单击的html" target="_blank">用户,HashSet为零)
http://theburningmonk.com/2011/03/hashset-vs-list-vs-
dictionary/
问题内容: 我刚刚s在以下lambda表达式中替换为_: Eclipse编译器说: ‘_’不应用作标识符,因为它是源级别1.8以后的保留关键字。 我没有在JLS§3.9词法结构/关键字中找到任何解释。 问题答案: 看的地方是JLS§15.27.1。Lambda参数 如果lambda参数具有名称_(即单个下划线字符),则是编译时错误。 不建议在任何上下文中使用变量名_。Java编程语言的未来版本可能
保留字是 Python 语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。 Python 包含的保留字可以执行如下命令进行查看: >>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'break',
ECMA-262 描述了一组具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言保留的,不能用作标识符。以下就是 ECMAScript的全部关键字(带*号上标的是第 5 版新增的关键字): ECMA-262 还描述了另外一组不能用作标识符的保留字。尽管保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字。以下是 ECMA
问题内容: 我有一些正在使用Gson反序列化的JSON。 我的问题是这是Java关键字,那么我该如何在类中创建与JSON中的字段相关的字段? 问题答案: 您可以使用gson的字段命名支持为字段使用其他名称。
问题内容: 我想获取所有Pythons关键字作为字符串的列表。如果我可以为内置函数做类似的事情,那也将很漂亮。 像这样的东西: 问题答案: 您询问了有关 语句的信息 ,同时在输出示例中显示了 关键字 。 如果您在寻找 关键字 ,它们都列在模块中: 从文档: 包含为解释程序定义的所有关键字的序列。如果将任何关键字定义为仅在特定语句生效时才处于活动状态,则这些关键字也将包括在内。
问题内容: 保留哪些JavaScript关键字(函数名称,变量等)? 问题答案: 其中包含JavaScript中所有保留的关键字,专门针对那些当下保持诚实,而不仅仅是尝试得分的人: