- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
15小时前关门了。
Improve this question
我正在寻找验证查询文本的最佳解决方案。我需要知道cmdText
是否是一个有效的名称?这是func必须为这些值返回true:
"Proc1", "[Proc1]", dbo.Proc1, [dbo].Proc1, [Proc 1]
SQL查询为false:
"SELECT 1 /* more text more text */".
请以最佳方式重新编码IsName函数...
void CreateCommand(string? cmdText)
{
Microsoft.Data.SqlClient.SqlCommand command = new();
command.CommandText = cmdText;
if (IsName(cmdText))
command.CommandType = CommandType.StoredProcedure;
}
bool IsName(string? cmdText) => (cmdText?.Length > 50) ? false : true;
1条答案
按热度按时间gupuwyp21#
使用正则表达式的解:
说明:
(\w+|\[[^\]]+\])
匹配一个"word"字符序列(您可以根据需要将\w
替换为[A-Za-z0-9_]
或类似字符),或者匹配一个除]
(括在方括号中)以外的任何字符序列。(\.(\w+|\[[^\]]+\]))?
匹配后面跟有上述相同内容的点,或不匹配任何内容^
和$
定位符分别匹配字符串的开始和结束.+?
替换为[^\]]+
,因为原始正则表达式也将匹配"[a].[b]. c"。