Analyser le code SQL en utilisant C#
Cet article décrit comment utiliser l'espace de noms Microsoft.SqlServer.Management.SqlParser.Parser
pour analyser le code SQL en C#. Cet espace de noms est inclus dans l'assembly Microsoft.SqlServer.Management.SqlParser.dll
, fourni avec SQL Server et peut être distribué librement.
SqlServer.Management.SqlParser.Parser
fournit des fonctionnalités permettant d'analyser les instructions Transact-SQL (T-SQL) et de générer une séquence de jetons qui représentent la structure de chaque instruction. L'exemple de méthode suivant illustre le processus d'analyse :
<code class="language-csharp">public static IEnumerable<TokenInfo> ParseSql(string sql) { ParseOptions parseOptions = new ParseOptions(); Scanner scanner = new Scanner(parseOptions); int state = 0, start, end, lastTokenEnd = -1, token; bool isPairMatch, isExecAutoParamHelp; List<TokenInfo> tokens = new List<TokenInfo>(); scanner.SetSource(sql, 0); while ((token = scanner.GetNext(ref state, out start, out end, out isPairMatch, out isExecAutoParamHelp)) != (int)Tokens.EOF) { TokenInfo tokenInfo = new TokenInfo { Start = start, End = end, IsPairMatch = isPairMatch, IsExecAutoParamHelp = isExecAutoParamHelp, Sql = sql.Substring(start, end - start + 1), Token = (Tokens)token }; tokens.Add(tokenInfo); lastTokenEnd = end; } return tokens; }</code>
Dans cet exemple, la classe TokenInfo
est une classe simple qui contient des propriétés pour les informations du jeton. Tokens
est une énumération (Microsoft.SqlServer.Management.SqlParser.Parser.Tokens
) qui définit des constantes comme TOKEN_BEGIN
, TOKEN_COMMIT
et TOKEN_EXISTS
.
Veuillez noter que l'assembly Microsoft.SqlServer.Management.SqlParser
est désormais disponible sous forme de package NuGet distinct : https://www.php.cn/link/e6e8bbe351bf19f963820a96543f25db.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!