[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.026 MDBファイルにアクセスしてみたADODB.Connection

MDBファイルにアクセスしてみたADODB.Connection



本文(発行内容)


<MDBファイルにアクセスしてみたADODB.Connection>

こんにちは、Ken3です。

そろそろDBやれよ、、、
と要望の声が聞こえてくる今日この頃いかがお過ごしですか?
(そんなこと、ダレもいってないって?)

今回は、
やっとDB関係をやってみます。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
といっても、たいしたことないのでご安心を。

/*
 * 1.Access2000でMDBファイルを作成
*/

MDBファイルを作成するために、
今回は楽してAccess2000を使用しました。

Access2000を起動して、
データベース名:db026.mdbを作成。

下記のテーブル、フィールドを作成しました。

テーブル名:TEST
フィールド
ID        オートナンバー型
TITLE     テキスト型
MEMO      テキスト型
WriteTime 日付型


/*
 * 2.データを軽く表示してみた。
*/

ポイントは、いろいろあるけど、
まずは、接続がうまく行くかチェックしてみる。

サンプルを見ながら、
自分なりに変更して、できたソースが下記のソースです。

-- test026-1.asp
<%@LANGUAGE=VBScript%>
<html>
<head>
<title>MDBファイルにアクセスしてみる</title>
</head>
<body>
<h2>MDBファイルにアクセスしてみる</h2>
test026-1.asp<br>
<hr>
<%
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")

  '.Provider?プロバイダー?通信会社?じゃなくって
  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"

  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("db026.mdb")

  'やっとデータベースを開ける
  db.open

  'お約束のレコードセットの作成 テーブル名TESTから全項目(*)を指定
  Set rs = db.Execute("Select * From TEST")

  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>ID</TD>"
  Response.Write "<TD>TITLE</TD>"
  Response.Write "<TD>MEMO</TD>"
  Response.Write "<TD>WrietTime</TD>"
  Response.Write "</TR>"

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    Response.Write "<TD>" & rs.Fields.Item("ID") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("TITLE") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("MEMO") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>"
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop

  Response.Write "</TABLE>"  'テーブルは終わりです

  '開いていたレコードセットを閉じる
  rs.Close

  'データベースも閉じようよ
  db.Close

  'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
  Set db = Nothing

%>
<hr>
終了です。<br>

</body>
</html>
----

ADODB.Connectionオブジェクトを作成
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
  Set db=Server.CreateObject("ADODB.Connection")
ADOを使用してDBをイタズラするので、
Server.CreateObjectで、
"ADODB.Connection"を指定して、オブジェクトを作成してます。

Microsoft.Jet.OLEDB.4.0
^^^^^^^^^^^^^^^^^^^^^^^
  '.Provider?プロバイダー?通信会社?じゃなくって
  'データアクセスにはJet.OLEDB.4.0を使うことを設定
  db.Provider = "Microsoft.Jet.OLEDB.4.0"
ここでは、先ほど作成したdb(ADO DB Connection)
の.Provider プロパティに
"Microsoft.Jet.OLEDB.4.0"
を設定。(指定)
まぁ、なんでこの名称か?だけど、
MDBファイルを使用するので今回はこれで。
じゃ、Oracleとかだと違うの?
ですね。
プロバイダーって単語気になってコメント書いたけど気にしないでね。

DBの位置を指定する
^^^^^^^^^^^^^^^^^^^^
  '次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
  db.ConnectionString = Server.MapPath("db026.mdb")
物事には順序があって、
接続にはADO DB Connectionオブジェクトを介して、
データアクセスにはMicrosoft.Jet.OLEDB.4.0を使用します
と来たら、次はどの?データベースを使うかを、
db.ConnectionString = Server.MapPath("db026.mdb")
で指定してます。

実際に開けるのは.open
^^^^^^^^^^^^^^^^^^^^^
  'やっとデータベースを開ける
  db.open
ここまで指定して、やっと開きます。


レコードセット、SQL文を渡して作成する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  'お約束のレコードセットの作成 テーブル名TESTから全項目(*)を指定
  Set rs = db.Execute("Select * From TEST")
SQL文、こいつも詳しく解説しないといけないんだけど、
今回は、かるく、
TESTテーブルの全てのデータをセレクトしたかったので、
Set rs = db.Execute("Select * From TEST")
としてます。
SQLの詳細は、また詳しくやりましょう。
でも、気になるのは、レコードセット?って単語だよね。
これは、オーダーしたレコードの集まりです。
Select * From TEST と無条件なので、
全てのデータがレコードセットとして返されてます。

テーブルタグを使って見出しとデータを表示する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  'データの表示をテーブルで行う
  Response.Write "<TABLE Border='1'>"

  '見出しをバカっぽく、そのまま書き込む
  Response.Write "<TR>"
  Response.Write "<TD>ID</TD>"
  Response.Write "<TD>TITLE</TD>"
  Response.Write "<TD>MEMO</TD>"
  Response.Write "<TD>WrietTime</TD>"
  Response.Write "</TR>"
まぁ、ここは大丈夫かなぁ。
表形式で出力したかったので、こんな感じにしてみました。

データを表示
^^^^^^^^^^^^
  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    Response.Write "<TD>" & rs.Fields.Item("ID") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("TITLE") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("MEMO") & "</TD>"
    Response.Write "<TD>" & rs.Fields.Item("WriteTime") & "</TD>"
    Response.Write "</TR>"
    '次のレコードにポインタを移動する
    rs.MoveNext    'これを忘れると悲惨なことに、、、
  Loop
ポイントは3つあって、
ア.rs.EOF = False
  ここで、レコードセットの行カーソルが終わりに達しているかチェックしてます。
イ.rs.Fields.Item("ID")
    単純に、rs.Fields.Item(フィールド名)で値を表示してます。
ウ.rs.MoveNext
  レコードセットの行カーソルを次の行に移動してます(レコード移動)
まぁ、よく見るパターンですよね。

後始末いろいろ
^^^^^^^^^^^^^^
  Response.Write "</TABLE>"  'テーブルは終わりです
は、忘れずにテーブルタグを閉めてます。
次に、
  '開いていたレコードセットを閉じる
  rs.Close
で、レコードセットを閉じて、
  'データベースも閉じようよ
  db.Close
データベースも閉じます。
あまけで今回は、
  'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
  Set db = Nothing
で、オブジェクトを解放してます。
使いっぱなしでも(食事を食べただけで食器を下げなくても)
関数を抜けると(部屋を出て行くと)
オブジェクトが解放されるんだけど(自然と食器を下げてくれる)
お行儀よく、使ったものは自分で解放しました。

/*
 * 3.関連情報
*/
Microsoft Universal Data Access
http://www.microsoft.com/japan/msdn/data/default.asp
↑いろいろとドライバーの情報など載ってます。
 悪意を持ったユーザに、、、の記述を見ると、なんかドキっとしますね。
 今、私はレンタルサーバーでDB動かしてるけど、
 自分でサーバ立ち上げたら日々ビクビクするんだろうなぁ。。。

Universal Data Access Web サイト、
ADO セクションへようこそ
http://www.microsoft.com/japan/msdn/data/ado.asp

DAO から ADO への移植
Jet Provider と組み合わせた ADO の使用
http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado.asp
↑私みたいに、DAOは少し知ってるぞって人はノゾクとわかるような、
 わからないような。

Webで情報検索が当たり前の時代になってるのかなぁ。
ISDNだけど、たまにストレスを感じる(贅沢かなぁ)

ADSLや光にしてみたいですね。
*相手のWebの反応が鈍くてあまりかわらないのか?
 それとも、ISDNとADSLだと開発ストレスも違うのか、、、
 ホントのとこを知りたいですよね。
 (ホントはエロ画像のダウンロードの速さが気になるんだろって?(爆))

/*
 * 4.終わりの挨拶
*/

今回は、
MDBファイルに軽くアクセスしてみました。
入り口にやっと着いたので、ここから飛ばして行こう
*不定期発行だから気にしなくていいんだけど、
 2・3日発行空いたのは、
 実は、ADOのつなげ方わかんなくて(やっぱ三流でした)

テストは、
http://www.ken3.org/cgi-bin/test/test026-1.asp
からできます。
ただ、データが表示されるだけなので、つまらないけど。
遊んでみてね。

素朴な疑問あったら、気軽に、
メール、掲示板に書き込んでくださいね。

ASP、VBScript勉強中の三流プログラマーのKen3でした。


ページフッター

ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、

三流君へ メッセージを送る

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 XXXXさんへ
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)

種類別のリンク や 広告など

[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


Blogとリンク:[三流君のMemo別館]/ [ASP 三流君のソースコード置き場]/ [Ken3Video YouTubeで動画解説]
広告:

気になった ジャンル ↓を選択してください。

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。

次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません

広告:



DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く

VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。



[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


広告: