連続して投降して申し訳ありません。
今、データ量とパフォーマンスを考えて、DB連携させるべきか悩んでいます。
JavaではHSQLDBと言うインストールもいらない簡易なDBが利用できますが、
VBでは何が最も身近でしょうか?
Accessの経験はありますが、なるべく他アプリを使いたくありません。
今、一部データはファイルの出力で賄ってますが、一番好ましいのが、
ファイル保存でSQLが効くものですが・・。
少々面倒でも、例えば起動時に何かしらのオブジェクトに格納する事で、
SQLを利用できないものでしょうか?
よろしくお願いします。
手軽さでは JET かな。単体配布も可能ですし。
より強固なDBを求めるなら、SQL Server Express や MSDE が良いでしょう。
> Accessの経験はありますが、なるべく他アプリを使いたくありません。
Access や Exchange は、内部で JET データベースを"利用"していますが、それらは
あくまでも「アプリケーション」であって、データベース本体ではありませんよね。
ありがとうございます。
今まで、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("?")
↑架空なものを定義すると言うことでしょうか?
申し訳ありません、お聞かせいただけないでしょうか?
それは「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 等で、自分で『作成』するなら、データファイルは不要ですけれども。
ありがとうございます。
少し、自分でも調べまして(他サイトのサンプルですが)、ありますね。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
一応、取得は成功したのでほっと、一行目をカラムとして定義しなければいけないようです。