データベースのアプリからの制御サンプル(PostgreSQL+VBScript)
タイトルの通り、初心者学習用のデータベース制御プログラミングのサンプルになります。
Windowsマシンとインターネットに接続出来る環境があれば出来るようにWindows10で作業してみたログとして残しておきます。
開発環境概要
- DBMS:PostgreSQL
- 制御API:Open Database Connectivity (ODBC)
- 使用言語:VBScript
PostgreSQLとODBCの インストール作業
①PostgreSQLのインストーラををダウンロードする
https://www.postgresql.orgを開いて
Downloadをクリック
「Windows」リンクをクリック
「Download the installer」リンクをクリック
最新Ver(2019/01/12時点では11.1)行の
「Windows x86-64」列の「Download」をクリックするとインストーラのDaownloadが始まる。
インストーラの*.exeファイルを任意のディレクトリに保存する。
(※ファイルサイズ結構大きいのでDL時間数分くらいかかるかも)
②PostgreSQLのインストーラを実行してPostgreSQLをインストールする
①でDownloadした「postgresql-11.1-1-windows-x64.exe」を
右クリック→"管理者として実行"で実行する。
「このデバイスに変更を加えますか?」みたいなダイアログが出ても「はい」で進める。
PostgreSQLのセットアップダイアログが出る
「Next」クリック
Insallation Directoryのダイアログが出る
インストール先のディレクトリがデフォルトのパスで良ければそのまま「Next」
(パスを変えたい場合は変更して「Next」)
Select Componentsダイアログが出る。
すべてのコンポーネントがチェックされている状態のまま「Next」
Data Directoryダイアログが出る。
データ保存のパスがそのままでよければ「Next」
(データはデータベースを大量に保存すると大きなサイズが必要なので別HDDやSSDを指定したい場合は変更して「Next」)
Passwordダイアログ
(スーパーユーザである「postgres」アカウントのパスワードを設定する)
2か所のPasswordBoxに同じ「postgres」を設定して「Next]
Portダイアログ
(PostgreSQLとの間で通信を行う場合のポート番号を指定する。通常は5432のままとしておく。)
Advanced Optionsダイアログ
Localeプルダウン選択肢から"Japanese, Japan"を選択して「Next」
Pre Installation Summaryダイアログ
これまでの設定を確認して変更したいものがなければ「Next」
Ready to Installダイアログ
「Next」でインストール開始
(インストールが終わるまでしばらく待機。。)
完了ダイアログが出たら"Launch Stack Builder at exit?"のチェックを付けて「Finish」で完了
引き続きStackBuilderのダイアログが立ち上がるのでODBCドライバをインストールする
スタックビルダダイアログで中央のプルダウンから「PostgreSQL 11(x64) on port 5432」を選択して「次へ」
カテゴリ
-Database Driversを開く
-psqlODBC(64bit) v10.02.0000-1にチェックを入れて「次へ」
「次へ」でODBCドライバのダウンロードが始まる
「次へ」でSetupのダイアログに移行する
「Next」をクリック
「Next」をクリック
「Next」をクリックでODBCドライバのインストール開始
「Finish」をクリックでODBCドライバのインストール完了
「終了」をクリックでPostgreSQLとODBCドライバのインストール完了
ODBCドライバの接続確認テスト
ウインドウズボタン+Rでファイル名を指定して実行ダイアログを出す
controlと入力してリターンでコントロールパネルを開く
コントロールパネルが起動したら右上の検索入力に「管理ツール」と入力してリターン
「ODBCデータソース(64ビット)」をダブルクリックで開く
「システムDNS」タブをクリックして、「追加」をクリック
データソースの新規作成ダイアログでデータソースのドライバーの一覧から
「PostgreSQL ODBC Driver (ANSI)」を選択して「完了」をクリック
PostgreSQL ANSI ODBC セットアップダイアログで
「port」に"5432"を入力
「ユーザ名」に"postgres"を入力
「パスワード」に"postgres"を入力
※データソース名の"PostgreSQL30"は後述のデータベースOpen時の引数に指定する。
「テスト」をクリックして接続をテストする
接続テスト成功なら下記のダイアログが出る。
「OK」クリックしてダイアログを閉じる。
「保存」をクリックして設定保存後、ダイアログを閉じて完了
実装編
下記のような内容のVBScriptの処理をテキストエディタに張り付けて
00_create_table.vbs
という名前で保存する
(syacyo_sampleというテーブルをCreateする処理)
'変数宣言ミスを防ぐおまじない
Option Explicit
'/*-------------------------------------------*/
'/* DataBaseに接続する */
'/*-------------------------------------------*/
'DataBaseのインスタンス格納用変数を宣言
Dim db
'ODBCのAPIのCreateObjectメソッドでDataBaseのインスタンス取得(=db変数に保存)
set db = CreateObject ("ADODB.Connection")
'DataBaseのインスタンスに対してOpenメソッドを呼び出してDataBaseをOpenする
'引数はDSN=PostgreSQL30 UserID=Password=postgres : インストール作業などで設定した値で接続する
db.Open "dsn=PostgreSQL30;uid=postgres;pwd=postgres;"
'/*-------------------------------------------*/
'/* テーブルをCreateする */
'/*-------------------------------------------*/
'テーブル作成
'sql query格納用変数を宣言
Dim sql
'SQL query設定
sql = "CREATE TABLE syacyo_sample (" _
&"番号 varchar(10)," _
&"名称 varchar(40)," _
&"Primary Key(番号))"
'SQL query発行
db.Execute sql
'/*-------------------------------------------*/
'/* DataBaseを接続解除する */
'/*-------------------------------------------*/
'ODBC 接続解除
db.Close
'Connection オブジェクトの Close メソッドを使用すると、
'Connection オブジェクトとデータベースとの間の接続を明示的に終了できます。
'テーブルCreate完了ダイアログを表示
MsgBox ("Hello World!" & vbcr & "Teble Create Complete!")
下記のような内容のVBScriptの処理をテキストエディタに張り付けて
01_insert_record.vbs
という名前で保存する
(syacyo_sampleというテーブルにRecordをInsertする処理)
'変数宣言ミスを防ぐおまじない
Option Explicit
'/*-------------------------------------------*/
'/* DataBaseに接続する */
'/*-------------------------------------------*/
'DataBaseのインスタンス格納用変数を宣言
Dim db
'ODBCのAPIのCreateObjectメソッドでDataBaseのインスタンス取得(=db変数に保存)
set db = CreateObject ("ADODB.Connection")
'DataBaseのインスタンスに対してOpenメソッドを呼び出してDataBaseをOpenする
'引数はDSN=PostgreSQL30 UserID=Password=postgres : インストール作業などで設定した値で接続する
db.Open "dsn=PostgreSQL30;uid=postgres;pwd=postgres;"
'/*-------------------------------------------*/
'/* RecordをInsertする */
'/*-------------------------------------------*/
'データ追加
'事前にレコード削除
db.Execute "DELETE FROM syacyo_sample"
'番号と名称の組をInsertしていく
db.Execute "INSERT INTO syacyo_sample VALUES ('0001','東京都')"
db.Execute "INSERT INTO syacyo_sample VALUES ('0002','神奈川県')"
db.Execute "INSERT INTO syacyo_sample VALUES ('0003','埼玉県')"
db.Execute "INSERT INTO syacyo_sample VALUES ('0004','千葉県')"
db.Execute "INSERT INTO syacyo_sample VALUES ('0005','群馬県')"
'/*-------------------------------------------*/
'/* DataBaseを接続解除する */
'/*-------------------------------------------*/
'ODBC 接続解除
db.Close
'Connection オブジェクトの Close メソッドを使用すると、
'Connection オブジェクトとデータベースとの間の接続を明示的に終了できます。
'Record Insert完了ダイアログを表示
MsgBox ("Insert Record Complete!")
下記のような内容のVBScriptの処理をテキストエディタに張り付けて
02_selectrecord.vbs
という名前で保存する
(syacyo_sampleというテーブルからRecordをSelectする処理)
'変数宣言ミスを防ぐおまじない
Option Explicit
'/*-------------------------------------------*/
'/* DataBaseに接続する */
'/*-------------------------------------------*/
'DataBaseのインスタンス格納用変数を宣言
Dim db
'ODBCのAPIのCreateObjectメソッドでDataBaseのインスタンス取得(=db変数に保存)
set db = CreateObject ("ADODB.Connection")
'DataBaseのインスタンスに対してOpenメソッドを呼び出してDataBaseをOpenする
'引数はDSN=PostgreSQL30 UserID=Password=postgres : インストール作業などで設定した値で接続する
db.Open "dsn=PostgreSQL30;uid=postgres;pwd=postgres;"
'/*-------------------------------------------*/
'/* RecordをSelectしてMessageBoxに表示 */
'/*-------------------------------------------*/
'TableからSELECT文で取り出したRecordSet格納用変数を宣言
Dim rs
'RecordSet取得
'Recordset オブジェクト. レコードセットは、Windows CE ベースの
'デバイス上にある実際のデータベース テーブルでのフィールドおよび行の
'サブセットに対応するフィールドと行を持つ仮想データベース テーブルです
'Recordset オブジェクトを作成すると、Recordset オブジェクトのプロパティ
'およびメソッドを使用してデータを読み取ったり操作したりできます。
set rs = db.Execute("SELECT * FROM syacyo_sample")
'MessageBox表示用の文字列用変数を宣言
Dim strRecord
'RecordSetに順次アクセスしてMessageBox表示用の文字列を生成する(1Record毎に改行コードを挟む)
'RecordSetの最終レコードまでループ開始
do until rs.EOF
' 前のrecord+ 番号 + Tab + 名称 + 改行
strRecord = strRecord & rs("番号") & vbTab & rs("名称") & vbCr
'RecordSetの次レコードに移動
rs.MoveNext
'ループ端
loop
'MessageBoxに読みだした各Recordを表示する
MsgBox (strRecord)
'/*-------------------------------------------*/
'/* DataBaseを接続解除する */
'/*-------------------------------------------*/
'ODBC 接続解除
db.Close
'Connection オブジェクトの Close メソッドを使用すると、
'Connection オブジェクトとデータベースとの間の接続を明示的に終了できます。
'Select Record完了ダイアログを表示
MsgBox ("Select Record Complete!")
下記のような内容のVBScriptの処理をテキストエディタに張り付けて
03_delete_table.vbs
という名前で保存する
(syacyo_sampleというテーブルからRecordをSelectする処理)
'変数宣言ミスを防ぐおまじない
Option Explicit
'/*-------------------------------------------*/
'/* DataBaseに接続する */
'/*-------------------------------------------*/
'DataBaseのインスタンス格納用変数を宣言
Dim db
'ODBCのAPIのCreateObjectメソッドでDataBaseのインスタンス取得(=db変数に保存)
set db = CreateObject ("ADODB.Connection")
'DataBaseのインスタンスに対してOpenメソッドを呼び出してDataBaseをOpenする
'引数はDSN=PostgreSQL30 UserID=Password=postgres : インストール作業などで設定した値で接続する
db.Open "dsn=PostgreSQL30;uid=postgres;pwd=postgres;"
'/*-------------------------------------------*/
'/* テーブルをDeleteする */
'/*-------------------------------------------*/
'テーブル作成
'sql query格納用変数を宣言
Dim sql
'SQL query設定
sql = "DROP TABLE IF EXISTS syacyo_sample"
'SQL query発行
db.Execute sql
'/*-------------------------------------------*/
'/* DataBaseを接続解除する */
'/*-------------------------------------------*/
'ODBC 接続解除
db.Close
'Connection オブジェクトの Close メソッドを使用すると、
'Connection オブジェクトとデータベースとの間の接続を明示的に終了できます。
'テーブルDelete完了ダイアログを表示
MsgBox ("Drop Table Complete!")
実行結果編
00_create_table.vbsをダブルクリックして実行する
結果、テーブルが生成されて下記のダイアログが出る
01_insert_record.vbsをダブルクリックして実行する
結果、テーブルにRecordがInsertされて下記のダイアログが出る
02_selectrecord.vbsをダブルクリックして実行する
結果、テーブルからSelectされたRecord内容が下記のダイアログに表示されて、Select処理完了のダイアログが出る
03_delete_table.vbsをダブルクリックして実行する
結果、テーブルがDropされて下記のダイアログが出る
あとがき
DataBaseの勉強を頑張っている未経験者が、その勉強が実務でどう役に立つのか、という観点で一例としてプログラムでこんな風に制御できますよ、という事を体験することでより実践的に理解して、勉強に意義を持たせるという目的で本記事を書いてみました。未経験の方がエンジニアになる一助となればいいなと思います。
この記事が気に入ったらサポートをしてみませんか?