ActiveQueryBuilder を使用せずに、SQL ステートメント (SQL Server 用) を解析して、列とパラメーター情報 (名前、データ型) を抽出するにはどうすればよいですか。
よろしく
ActiveQueryBuilder を使用せずに、SQL ステートメント (SQL Server 用) を解析して、列とパラメーター情報 (名前、データ型) を抽出するにはどうすればよいですか。
よろしく
あなたはで試すことができます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;
}
ステートメントを解析することは、結果のステートメントのスキーマを取得することとは大きく異なります。解析とは、クエリの構文を検証することを意味します。ただし、結果のスキーマを取得するには解析が必要なので、これを試してみてはどうでしょうか。
DataTable table = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter("select * from yourtable", "your connection string");
sda.FillSchema(table, SchemaType.Source);