書いてみたコードはこんな感じ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
using System; using System.Data; using System.Windows.Forms; using System.Data.OleDb; namespace テーブル一覧取得 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void File_select_Click(object sender, EventArgs e) { OpenFileDialog openFile = new OpenFileDialog { Title = "ファイルを選択してください。", InitialDirectory = @"D:\Study", Filter = "ACCESSファイル(*.mdb;*.accdb)|*.mdb;*.accdb|すべてのファイル (*.*)|*.*" }; if(openFile.ShowDialog() == DialogResult.OK) { textBox1.Text = openFile.FileName; } } private void Get_table_Click(object sender, EventArgs e) { listBox1.Items.Clear(); string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + textBox1.Text; using (OleDbConnection conn = new OleDbConnection(constr)) { conn.Open(); DataTable table = conn.GetSchema("Tables", new string[4] { null, null, null, "TABLE" }); foreach(DataRow row in table.Rows) { listBox1.Items.Add(row["TABLE_NAME"].ToString()); } conn.Close(); } } } } |
実行したときの動作は以下画像の通り。
15行目~28行目のファイル選択画面をあげるコードは
こっちが参考になればと思います。
30行目~49行目のざっくり解説
・listBox1.Items.Clear()
→リストボックスの中身をクリアする処理ですが、これがないと
「テーブル一覧取得」ボタンを押しただけ表示が増えていくので必須です。
・string constr = @”Provider=Microsoft~~~
→接続に使う文字列を定義しているところって感じでしょうか、、、
Data Source=~~~はどこのデータ使いますか?的なものですかね
※今回の例であれば、「D:\Study\TEST.mdb」です。
・using (OleDbConnection conn = new OleDbConnection(constr)
→OleDbConnectionはデータソースに接続するために使うもの?ですかね
接続のための文字列は一個前で定義した「constr」を使ってる感じです。
・conn.Open()、conn.Close()
→接続を開きます、閉じますってやつだと思う。
・40~45行目
→ごめんなさい、よくわからないです。。。
GetSchemaでファイルの情報を抜いてこれる感じなのかな?
foreachのところは繰り返し処理でリストボックスに値を入れてるだけです。
知識不足で間違ってるところも多々あるかと思いますので
参考程度にお願いします。
コメントを残す