请问如何判断 一个文本里面的内容是不是 sql语句呢 正则可以判断吗
那只能检测关键字吧,也无法判断sql是否正确等
using System.Text.RegularExpressions;
string sqlPattern = @"\b(SELECT|INSERT|UPDATE|DELETE|CREATE|ALTER|DROP)\b";
string text = "SELECT * FROM test";
bool isSql = Regex.IsMatch(text, sqlPattern, RegexOptions.IgnoreCase);
if (isSql)
{
Console.WriteLine("是sql");
}
else
{
Console.WriteLine("不是sql");
}
可以使用正则表达式来判断文本中是否包含 SQL 语句。下面是一个简单的 C# 正则表达式示例代码,可以帮助你判断 SQL 语句是否在给定的文本中出现:
using System;
using System.Text.RegularExpressions;
class Program {
static void Main(string[] args) {
string text = "SELECT * FROM users WHERE id = 123";
string pattern = @"^\s*(SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|\
ALTER)\b.*;$";
bool isSqlStatement = Regex.IsMatch(text, pattern, RegexOptions.IgnoreCase);
if (isSqlStatement) {
Console.WriteLine("The text contains a SQL statement.");
} else {
Console.WriteLine("The text does not contain a SQL statement.");
}
}
}
上述正则表达式的含义是:匹配以 SQL 关键字(SELECT,INSERT,UPDATE,DELETE,CREATE,DROP 或 ALTER)开头并以分号结尾的语句,忽略大小写。
当然,这只是一个简单的示例。实际应用中,可能需要根据具体情况调整正则表达式的匹配规则。例如,考虑更多的 SQL 关键字、特殊字符、多行语句等等。
大体上,如果想用正则判断一个文本是否是 sql 指令或者是否包含 sql 指令是可行的,但如果想实现这样的一个正则会很麻烦,因为 sql 指令关键字、语法、支持的方法之类的不尽相同,不推荐用正则做,这样的正则做出来,得有个几K大小
你可以百度一下 sql 语法检查器,我记得有不少这类产品
SqlCommand cmd = new SqlCommand(装SQL语句的变量, 连接对象);