C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: クエリ名一覧、クエリ名をキーにSQL文取り出し


(過去ログ 40 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■20862 / inTopicNo.1)  クエリ名一覧、クエリ名をキーにSQL文取り出し
  
□投稿者/ やぎ (1回)-(2008/06/18(Wed) 16:55:07)

分類:[C#] 

System.Data.OleDbでmdbからクエリ名一覧を取得し、リストボックスで選択させてクエリを実行させようとしています。
その際SQL文を見て、実行しても大丈夫そうなクエリだけをリストに表示したいのですが、
1.クエリ名一覧の取り方
2.クエリ名でもって、そのクエリの情報を取り出す方法(SQL文を取り出すために
が分かりません。

どなたかお教え願えませんか。
よろしくお願いします。

環境は
Windows XP SP2
VisualStudio2005
です
引用返信 編集キー/
■20864 / inTopicNo.2)  Re[1]: クエリ名一覧、クエリ名をキーにSQL文取り出し
□投稿者/ bad14mg (14回)-(2008/06/18(Wed) 17:25:52)
No20862 (やぎ さん) に返信
> System.Data.OleDbでmdbからクエリ名一覧を取得し、リストボックスで選択させてクエリを実行させようとしています。
> その際SQL文を見て、実行しても大丈夫そうなクエリだけをリストに表示したいのですが、
> 1.クエリ名一覧の取り方
> 2.クエリ名でもって、そのクエリの情報を取り出す方法(SQL文を取り出すために
> が分かりません。
>
> どなたかお教え願えませんか。
> よろしくお願いします。
>
> 環境は
> Windows XP SP2
> VisualStudio2005
> です

この辺り
http://msdn.microsoft.com/ja-jp/library/system.data.oledb.oledbconnection.getoledbschematable.aspx
引用返信 編集キー/
■20865 / inTopicNo.3)  Re[2]: クエリ名一覧、クエリ名をキーにSQL文取り出し
□投稿者/ やぎ (2回)-(2008/06/18(Wed) 19:04:38)
bad14mgさん、レスありがとうございました。

> この辺り
> http://msdn.microsoft.com/ja-jp/library/system.data.oledb.oledbconnection.getoledbschematable.aspx

一度読んだんですよ...、このページ。><
だけど制約列とか意味分からん単語が出てきて理解を諦めたんですが、やっぱりこのページですか。

んで、試行錯誤でやってみました。
意味を理解してやっていないのですが。
こんなんでいいんですかね...。

// クエリ名とそのSQL文を取得
private static Dictionary<string, string> GetViewSchema(string connectionStr)
{
 OleDbConnection oleConn = new OleDbConnection(connectionStr);
 oleConn.Open();
 DataTable schemaTable =
  oleConn.GetOleDbSchemaTable(OleDbSchemaGuid.Views, new object[] { });
 oleConn.Close();

 Dictionary<string, string> mapSQL = new Dictionary<string, string>();
 foreach (DataRow dataRow in schemaTable.Rows)
 {
  object queryName = dataRow["TABLE_NAME"];
  object sql = dataRow["VIEW_DEFINITION"];
  mapSQL.Add(queryName.ToString(), sql.ToString());
 }

 return mapSQL;
}

GetOleDbSchemaTableの引数の意味が分からなかったのですが、
【引数1】戻り値のDataTableのスキーマを指定
【引数2】戻り値のDataTableの行を絞り込むための条件
で良いのかなぁ。

教えてもらったページにある例では、第2引数で与えられるobject[]の3番目(0開始)の要素に"TABLE"が指定されているから、
TABLE_NAMEというフィールド(0開始で3番目の列)のうち、値が"TABLE"であるものだけが戻り値のDataTableの行として追加されて返されているわけですね?
解決済み
引用返信 編集キー/
■20866 / inTopicNo.4)  Re[3]: クエリ名一覧、クエリ名をキーにSQL文取り出し
□投稿者/ 魔界の仮面弁士 (772回)-(2008/06/18(Wed) 19:59:33)
No20865 (やぎ さん) に返信
> だけど制約列とか意味分からん単語が出てきて理解を諦めたんですが、やっぱりこのページですか。
ADO(≠ADO.NET) でいうところの、Connection.OpenSchema メソッドに相当する物ですね。
どのような情報が返されるかは、MDAC SDK で確認できます。

《付録 B スキーマ行セット》
http://msdn.microsoft.com/ja-jp/library/cc407988.aspx

ちなみにプロバイダによっては OleDbSchemaGuid 以外の GUID 値をサポートする場合があります。
http://doc.ddart.net/mssql/sql2000/html/mdacxml/htm/wpmigratingappendixc.htm

> 教えてもらったページにある例では、(…中略…)として追加されて返されているわけですね?
ですます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -