Visual Studio 2012 で作成しています。 (C:\Users\ユーザ\Documents\Visual Studio 2012\Templates\ProjectTemplates に保存します)![]()
Access を参照すると、テーブル一覧とビュー一覧が表示され、テーブルまたはビューをダブルクリックすると、行を表示するテンプレートです。 システムテーブル表示をチェックすると、Access のシステムテーブルを表示しますが、ユーザと権限の管理でシステムテーブルへのアクセス権限が設定できるのは、.mdb ファイルのみになります。 サンプルデータ / 販売管理C.accdb と 販売管理C.mdb
以下はシステムテーブルを表示したものですが、表示できないデータは x となっています。
![]()
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SqlUnitAccess2 { public partial class Form1 : Form { // ファイル選択用 private OpenFileDialog ofd = new OpenFileDialog(); // ********************* // コンストラクタ // ********************* public Form1() { InitializeComponent(); } // ********************* // 画面初期処理 // ********************* private void Form1_Load(object sender, EventArgs e) { // ********************* // タイトル表示変更 // ********************* this.Text = "SqlUnitAccess"; } // ********************* // 参照ボタン // ********************* private void ref_Click(object sender, EventArgs e) { // ********************* // ファイル選択 // ********************* ofd.Filter = "Access(*.mdb;*.accdb)|*.mdb;*.accdb|すべてのファイル(*.*)|*.*"; ofd.FilterIndex = 1; ofd.Title = "Access データベースを選択してください"; ofd.RestoreDirectory = true; if (ofd.ShowDialog() != DialogResult.OK) { return; } // ********************* // タイトル表示変更 // ********************* this.Text = ofd.FileName; // ********************* // テーブル一覧表示 // ********************* loadTables(ofd.FileName); } // ********************* // 実行ボタン // ********************* private void action_Click(object sender, EventArgs e) { string sql = textBox1.Text; // ********************* // select 実行 // ********************* executeReader(ofd.FileName, sql); } // ********************* // テーブル一覧ダブルクリック // ( CellDoubleClick ) // ********************* private void tabel_Select(object sender, DataGridViewCellEventArgs e) { // ********************* // table 名取得 // ********************* string value = dataGridTables.Rows[e.RowIndex].Cells[0].Value.ToString(); textBox1.Text = "select * from " + value; // ********************* // select 実行 // ********************* executeReader(ofd.FileName, textBox1.Text); } // ********************* // テーブル一覧表示 // ********************* private void loadTables(string path) { dataGridSelect.DataSource = null; using (OleDbConnection myCon = new OleDbConnection()) { // ********************* // 接続文字列の作成 // ********************* myCon.ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};", path); // ********************* // 接続 // ********************* try { // 接続文字列を使用して接続 myCon.Open(); } catch (Exception ex) { MessageBox.Show(this, ex.Message); return; } DataTable dataTable = null; if (checkBoxSysTable.Checked) { // ********************* // 全て // ********************* dataTable = myCon.GetOleDbSchemaTable( OleDbSchemaGuid.Tables, new object[] { null, null, null, null } ); } else { // ********************* // TABLE と VIEW をマージ // ********************* dataTable = myCon.GetOleDbSchemaTable( OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" } ); DataTable dataTable2 = myCon.GetOleDbSchemaTable( OleDbSchemaGuid.Tables, new object[] { null, null, null, "VIEW" } ); dataTable.Merge(dataTable2); } // 表示しない列は削除 dataTable.Columns.Remove("TABLE_CATALOG"); dataTable.Columns.Remove("TABLE_SCHEMA"); //dataTable.Columns.Remove("TABLE_TYPE"); dataTable.Columns.Remove("TABLE_GUID"); dataTable.Columns.Remove("DESCRIPTION"); dataTable.Columns.Remove("TABLE_PROPID"); dataTable.Columns.Remove("DATE_CREATED"); dataTable.Columns.Remove("DATE_MODIFIED"); // 表示 dataGridTables.DataSource = dataTable; // 接続解除 myCon.Close(); } // カラム幅の自動調整 dataGridSelect.AutoResizeColumns(); } // ********************* // select 実行 // ********************* private void executeReader(string path, string sql) { using (OleDbConnection myCon = new OleDbConnection()) using (OleDbCommand myCommand = new OleDbCommand()) { // ********************* // 接続文字列の作成 // ********************* myCon.ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};", path); // ********************* // 接続 // ********************* try { // 接続文字列を使用して接続 myCon.Open(); // コマンドオブジェクトに接続をセット myCommand.Connection = myCon; // コマンドを通常 SQL用に変更 myCommand.CommandType = System.Data.CommandType.Text; } catch (Exception ex) { MessageBox.Show(this, ex.Message); return; } // ********************* // 実行 SQL // ********************* myCommand.CommandText = sql; // ********************* // レコードセット取得 // ********************* try { using (OleDbDataReader myReader = myCommand.ExecuteReader()) { DataTable dataTable = new DataTable(); dataTable.Load(myReader); dataGridSelect.DataSource = dataTable; // リーダを使い終わったので閉じる myReader.Close(); } } catch (Exception ex) { myCon.Close(); MessageBox.Show(this, ex.Message); return; } // 接続解除 myCon.Close(); } // カラム幅の自動調整 dataGridSelect.AutoResizeColumns(); } // ********************* // システム表の表示エラー対応 // ********************* private void dataGridSelect_DataError(object sender, DataGridViewDataErrorEventArgs e) { } } }
|
【VS(C#)の最新記事】
- Replit : cs-list
- C# : Excel の新しいブックのデフォルトのシートのセルに直接値をセットして、オートフィルを Range オブジェクトから実行する
- C#( Form ) : ウインドウ枠の無い吹き出しの作成
- C# のタプル( Visual Studio 2017 でテスト )
- C# : インターネット上の JSON ファイルのフォーマットを クラスとして定義して1行でオブジェクト化して使用する
- C# の文法的文字列処理
- C# : System.Data.Odbc によるデータベースのテーブルからのデータ取得処理( サンプルの SQL は MySQL 用です )
- C# : Excel を データベースとして DataGridView に読み込む
- C# : dynamic 型 による Excel へのアクセス
- C# : フォームを表示せずに、通知領域にアイコンを表示させる常駐プログラム
- Microsoft Access に対してSQLを入力してその結果を DataGridView に表示する最も簡単なコード
- C# : System.Data.Odbc データ取得(SELECT)処理( MySQL ) : ※ using 無し( Dispose 実行 )
- C# : SQL 文を外部テキストにして、String.Format でデータ部分を置き換えて利用する
- C# コンソールアプリを AN HTTPD で実行
- C# : SQLServer( SQLExpress ) の SMO を使用してテーブルの CREATE TABLE 文 を取得する
- C# : DataGridView に TKMP.DLL の IMAP(POP3) で受信したメールを非同期に表示する( 添付ファイルも取得 )
- C# : TKMP.DLLを使った、メール送信テンプレート
- C# と VB.net : TKMP.DLL を使って IMAP でメール本文の一覧を取得する( コンソール )
- C# でDataTable と DataSource を使用して、DataGridView にデータを表示するテンプレート( 行をダブルクリックしてダイアログを表示して行データを処理 )
- (C#) / VS2010 または VS2012 : TKMP.DLL(3.1.2 または 3.1.8)を使った、『さくらインターネット』用メール送信テンプレート