実現したいこと
組み込み系のDBを使用し(free lisence)アプリケーションを
作りたいです。
質問内容
firebird embededに添付されたとおりに.dllなどを配置し
testアプリケーションを作成しています。
self.OBDatabase.DatabaseName
:= ChangeFileExt(Application.name,'.FDB')
self.IBDatabase.params.add('USER "test"');
self.IBDatabase.params.add('PASSWORD "masterkey"');
self.IBDatabase.params.add('PAGE_SIZE',4096);
self.IBDatabase.CreateDatabase; //.FDBファイルが作成される。
その後
self.OBDatabase.DatabaseName
:= ChangeFileExt(Application.name,'.FDB');
self.IBDatabase.params.values['USER']:='test';
self.IBDatabase.params.values['PASSWORD']:='masterkey';
self.IBDatabase.open;
とするとOpenしたときに"ユーザの要求によりキャンセルされました。"
と出力されています。
何がダメなのでしょうか?
良い関連Webペーじなどございましたらご教示ください?
開発環境
windows 2000
D7
Firebird embeded v1.5
以上 宜しくお願い致します
> self.IBDatabase.params.values['USER']:='test';
> self.IBDatabase.params.values['PASSWORD']:='masterkey';
を
self.IBDatabase.params.values['user_name']:='test';
self.IBDatabase.params.values['password']:='masterkey';
にしたら、どうなりますか?
igyさん
ご返信ありがとうございます。
変更してやってみましたが
"ユーザの要求によりキャンセルされました"
とダイアログボックスで出力されてしまいました。
> self.IBDatabase.CreateDatabase; //.FDBファイルが作成される。
で、実際にデータベースのファイルは生成されていますか?
> self.OBDatabase.DatabaseName
> := ChangeFileExt(Application.name,'.FDB')
で、“OBDatabase”の部分は、“IBDatabase”でなくてもよいのですか?
また、“Application.name” の部分は、“Application.ExeName”でなくてもよいのですか?
>igyさん
返信送れまして申し訳ないです。
、“OBDatabase”の部分は、“IBDatabase”でなくてもよいのですか?
また、“Application.name” の部分は、“Application.ExeName”
ご指摘のとおり間違っていました。
ただご指摘のとおりにやっても
"ユーザの要求によりキャンセルされました。"とでてしまいました。
FDBは作成されているのですが・・・・
ちなみにdelphi7を使っているのですがFireBirdはInterBase6がないと
動かないのでしょうか?
>ちなみにdelphi7を使っているのですがFireBirdはInterBase6がないと
>動かないのでしょうか?
Interbase6がなくても動くと思います。
# ただdelphi7付属のIBXは、Firebirdに正式に対応しているわけでは
# ないと思います。
あと、
fbembed.dll は gds32.dll にリネームしていますか?
あと、
> self.IBDatabase.params.add('PAGE_SIZE',4096);
↑コンパイル時にエラーがでませんか?
> self.IBDatabase.params.values['USER']:='test';
> self.IBDatabase.params.values['PASSWORD']:='masterkey';
を
self.IBDatabase.params.values['user_name']:='SYSDBA';
self.IBDatabase.params.values['password']:='masterkey';
にしたら、どうなりますか?
参考に
http://dn.codegear.com/article/33775
ZeosLibを使ってみませんか。
Igyさん,TSさん
ありがとうございます。
> fbembed.dll は gds32.dll にリネームしていますか?
これはOKです。
> self.IBDatabase.params.add('PAGE_SIZE',4096);
↑コンパイル時にエラーがでませんか?
失礼しました。
self.IBDatabase.params.add('PAGE_SIZE 4096');
が正でした。
> self.IBDatabase.params.values['USER']:='test';
> self.IBDatabase.params.values['PASSWORD']:='masterkey';
を
self.IBDatabase.params.values['user_name']:='SYSDBA';
self.IBDatabase.params.values['password']:='masterkey';
にしたら、どうなりますか?
同くダメでしたが英語版のdelphiを使用したら以下のようなメッセージ
がでました。
EIBClientError
Operation cancelled at user's request
EIBClientErrorをHelpでみると
an EIBClientError is raised when a component can't access the database because it does not have an IBDatabase component
specified, attempts to edit a read-only dataset, tries to execute
an empty query, and so on.
設定不足なのかもしれません。無知ですね。私。
もう少しぐぐってみます。:-(
TSさん
ご教授ありがとうございます。
使用してみます!:-)
Igyさん解決しました!
TIBDatabaseだけしか設定していなかったのが悪かったみたいです。
TIBTransaction、TIBSQLを設定しましたらうまくいきました!
本当に感謝です。:-)
object IBDatabase1: TIBDatabase
DatabaseName = 'C:\test\TEST.GDS'
LoginPrompt = False
DefaultTransaction = IBTransaction1
IdleTimer = 0
SQLDialect = 3
TraceFlags = []
Left = 128
Top = 88
end
object IBTransaction1: TIBTransaction
Active = False
DefaultDatabase = IBDatabase1
AutoStopAction = saNone
Left = 216
Top = 64
end
object IBSQL1: TIBSQL
Database = IBDatabase1
ParamCheck = True
Transaction = IBTransaction1
Left = 176
Top = 152
end
ツイート | ![]() |