VBにとって最も簡易なDB

解決


ぼぼ  2008-04-19 18:30:46  No: 139576  IP: 192.*.*.*

連続して投降して申し訳ありません。

今、データ量とパフォーマンスを考えて、DB連携させるべきか悩んでいます。
JavaではHSQLDBと言うインストールもいらない簡易なDBが利用できますが、
VBでは何が最も身近でしょうか?

Accessの経験はありますが、なるべく他アプリを使いたくありません。
今、一部データはファイルの出力で賄ってますが、一番好ましいのが、
ファイル保存でSQLが効くものですが・・。

少々面倒でも、例えば起動時に何かしらのオブジェクトに格納する事で、
SQLを利用できないものでしょうか?

よろしくお願いします。

編集 削除
魔界の仮面弁士  2008-04-19 21:06:38  No: 139577  IP: 192.*.*.*

手軽さでは JET かな。単体配布も可能ですし。
より強固なDBを求めるなら、SQL Server Express や MSDE が良いでしょう。

> Accessの経験はありますが、なるべく他アプリを使いたくありません。
Access や Exchange は、内部で JET データベースを"利用"していますが、それらは
あくまでも「アプリケーション」であって、データベース本体ではありませんよね。

編集 削除
ぼぼ  2008-04-20 07:05:24  No: 139578  IP: 192.*.*.*

ありがとうございます。

今まで、JETと言う意味を分からず、使っていました。
一般的にDBを扱う時のソースはこんな感じだと思ってます(Access)が

Public wS As Workspace    'ワークスペース
Public dB As Database     'データベース
Public RS As Recordset

'DB接続
Set wS = DBEngine.Workspaces(0)
Set dB = wS.OpenDatabase("DBフルパス")

'取得系
Set RS = dB.OpenRecordset("SELECT * FROM AA", dbOpenDynaset)
'更新系
dB.Execute "DELETE FROM AA"

'DB開放
dB.close

実DBファイルが無くてもSQLを利用可能ということでしょうか?
Set dB = wS.OpenDatabase("?")
                          ↑架空なものを定義すると言うことでしょうか?

申し訳ありません、お聞かせいただけないでしょうか?

編集 削除
魔界の仮面弁士  2008-04-20 10:24:46  No: 139579  IP: 192.*.*.*

それは「DAO」ですね。(Data Access Objects)

DAO は、JET データベースエンジンの操作に特化したミドルウェアであり、
それ自体はデータベース本体というわけではありません。
(その他にも、ADO や RDO といったミドルウェアが存在します)

# ちなみに Microsoft JET は、当初は Joint Engine Technology の略と
# されていましたが、現在では何かの略というわけではないようです。

DAO 3.0 は JET 3.0 形式に対応し、DAO 3.6 は、JET 4.0 形式に対応します。
(最新版は DAO 12.0 です)
また、上位バージョンの DAO は、下位バージョンに対する互換性を持ちます。
http://support.microsoft.com/kb/141796/ja
http://support.microsoft.com/kb/303528/ja


> 実DBファイルが無くてもSQLを利用可能ということでしょうか?
実DBファイルとは、データベースエンジンとなる DLL 当の事でしょうか?
それとも、*.mdb や *.xls や *.csv といった、データファイルの事でしょうか?

データの読み込みを行う以上、元となるデータファイルは当然必須です。
DAO で読み込むなら、DAO のランタイムが必要です。
しかし、*.mdb の読み込みのために、Access が必須というわけでありません。

なお、JET 自体の機能では無く、Access によって提供される部分(ユーザ定義関数、
レポート、VBAフォームなど)を利用する場合には、Access が必要となります。


> Set dB = wS.OpenDatabase("?")
>                           ↑架空なものを定義すると言うことでしょうか?
OpenDatabase は、データファイルを読み込むものですから、当然、データファイルも必要です。
CreateDabase 等で、自分で『作成』するなら、データファイルは不要ですけれども。

編集 削除
ぼぼ  2008-04-20 15:30:10  No: 139580  IP: 192.*.*.*

ありがとうございます。

少し、自分でも調べまして(他サイトのサンプルですが)、ありますね。ADO接続になるんでしょうか。
ただ、where句をどうすれば、UPDATEなどの更新系はどうなるのか、まだ分かってません。

参照設定で「Microsoft Active DataX Objects ..」
Public Const DRIVER = "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ="
Public Const PRVDER = "Provider=MSDASQL;Extended Properties="""
Public uCN    As New ADODB.Connection
Public uRS    As New ADODB.Recordset

uCN.ConnectionString = PRVDER & DRIVER & "C:\" & """"
uCN.Open

str = "Select * From USER.csv"
uRS.Open str, uCN, adOpenStatic, adLockReadOnly, adCmdText

uRS.Close
Set uRS = Nothing
uCN.Close
Set uCN = Nothing

一応、取得は成功したのでほっと、一行目をカラムとして定義しなければいけないようです。

編集 削除