1

ActiveQueryBuilder を使用せずに、SQL ステートメント (SQL Server 用) を解析して、列とパラメーター情報 (名前、データ型) を抽出するにはどうすればよいですか。

よろしく

4

2 に答える 2

2

あなたはで試すことができますTSql100Parser class

リンク:   http://msdn.microsoft.com/fr-fr/library/microsoft.data.schema.scriptdom.sql.tsql100parser.aspx

サンプル :

 bool fQuotedIdenfifiers = false;
 var _parser = new TSql100Parser(fQuotedIdenfifiers);

 SqlScriptGeneratorOptions options = new SqlScriptGeneratorOptions();
 options.SqlVersion = SqlVersion.Sql100;
 options.KeywordCasing = KeywordCasing.UpperCase;
 _scriptGen = new Sql100ScriptGenerator(options);


 IScriptFragment fragment;
 IList<ParseError> errors;
 using (StringReader sr = new StringReader(inputScript))
 {
       fragment = _parser.Parse(sr, out errors);
 }

 if (errors != null && errors.Count > 0)
 {
       StringBuilder sb = new StringBuilder();
       foreach (var error in errors)
       {
           sb.AppendLine(error.Message);
           sb.AppendLine("offset " + error.Offset.ToString());
       }
       var errorsList = sb.ToString();
 }
 else
 {
       String script;
       _scriptGen.GenerateScript(fragment, out script);
       var result = script;
 }
于 2012-09-25T10:03:46.597 に答える
1

ステートメントを解析することは、結果のステートメントのスキーマを取得することとは大きく異なります。解析とは、クエリの構文を検証することを意味します。ただし、結果のスキーマを取得するには解析が必要なので、これを試してみてはどうでしょうか。

DataTable table = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter("select * from yourtable", "your connection string");
sda.FillSchema(table, SchemaType.Source);
于 2012-09-25T10:11:11.773 に答える