コメント |
@SHOW
http://logicalerror.seesaa.net/article/228401203.html(VB.net : GetSchema メソッドでデータベース内のテーブル一覧と指定したテーブルの列名一覧を取得する)
@END
@DIV
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Data.Odbc;
namespace ConsoleApplication2 {
class Program {
static void Main(string[] args) {
// 新しい OdbcConnectionStringBuilder オブジェクトを作成
OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder();
// ドライバ文字列をセット ( 波型括弧{} は必要ありません )
// 文字列を正確に取得するには、レジストリ : HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI
builder.Driver = "MySQL ODBC 5.3 Unicode Driver";
// 接続用のパラメータを追加
builder.Add("SERVER", "localhost");
builder.Add("DATABASE", "lightbox");
builder.Add("UID", "root");
builder.Add("PWD", "password");
// 内容を確認
Console.WriteLine(builder.ConnectionString);
// 新しい OdbcConnection オブジェクトを作成
OdbcConnection myCon = new OdbcConnection();
// 接続文字列を設定
myCon.ConnectionString = builder.ConnectionString;
// 接続を開く
try {
myCon.Open();
} catch (OdbcException ex) {
Console.WriteLine("接続エラーです");
// Console.WriteLine( ex.Message )
ErrorAction(ex);
return;
}
// データベースのテーブル一覧のメタデータを取得
// TABLE_CATALOG
// TABLE_SCHEMA
// TABLE_NAME
// TABLE_TYPE
DataTable dataTable = myCon.GetSchema(OdbcMetaDataCollectionNames.Tables);
// 一覧表示
DataRow row = null;
foreach (DataRow row_loopVariable in dataTable.Rows) {
row = row_loopVariable;
DataColumn column = dataTable.Columns["TABLE_NAME"];
Console.WriteLine(row[column]);
}
// データベースの列名一覧のメタデータを取得
// TABLE_CATALOG
// TABLE_SCHEMA
// TABLE_NAME
// COLUMN_NAME
// 配列で、対象データを絞る
string[] restrictionValues = {
null,
null,
"社員マスタ"
};
// 社員マスタの列のメタデータ
dataTable = myCon.GetSchema(OdbcMetaDataCollectionNames.Columns, restrictionValues);
// 列名の一覧を表示
foreach (DataRow row_loopVariable in dataTable.Rows) {
row = row_loopVariable;
DataColumn column = dataTable.Columns["COLUMN_NAME"];
Console.WriteLine(row[column]);
}
// 接続を閉じる
myCon.Close();
// OdbcConnection オブジェクトに使用されているすべてのリソースを解放
myCon.Dispose();
// 処理終了
Console.WriteLine("処理が終了しました");
// 一時停止
Console.Write("Enterキーを押して下さい : ");
Console.ReadLine();
}
// **********************
// エラー処理
// **********************
public static void ErrorAction(OdbcException ex) {
string CrLf = "\r\n";
string errorMessages = "";
int i = 0;
for (i = 0; i <= ex.Errors.Count - 1; i++) {
errorMessages += "Index #" + i.ToString() + CrLf + "Message: " + ex.Errors[i].Message + CrLf + "NativeError: " + ex.Errors[i].NativeError.ToString() + CrLf + "Source: " + ex.Errors[i].Source + CrLf + "SQL: " + ex.Errors[i].SQLState + CrLf;
}
Console.WriteLine(errorMessages);
}
}
}
@END |