gpt4 book ai didi

delphi - 在Delphi中使用DBExpress创建数据库?

转载 作者:行者123 更新时间:2023-12-03 19:36:22 24 4
gpt4 key购买 nike

我需要使用DBExpress以编程方式创建Firebird数据库。对于SQL Server,我已经做到了这一点,首先连接到Master,然后将Create的脚本传递给查询,但是使用Firebird时,我遇到了一些小问题。

最佳答案

我从一个为Freepascal项目创建了一些代码的同事那里获得了很好的建议。它不使用DB Express,但是据他介绍,这是用代码创建数据库的唯一方法。此代码基于InterBase手册,并使用来自gdslib / fbclient dll的调用:

procedure TIBConnection.CreateDB;

var ASQLDatabaseHandle,
ASQLTransactionHandle : pointer;
CreateSQL : String;
pagesize : String;
begin
CheckDisConnected;
{$IfDef LinkDynamically}
InitialiseIBase60;
{$EndIf}
ASQLDatabaseHandle := nil;
ASQLTransactionHandle := nil;
CreateSQL := 'CREATE DATABASE ';
if HostName <> '' then
CreateSQL := CreateSQL + ''''+ HostName+':'+DatabaseName + ''''
else
CreateSQL := CreateSQL + '''' + DatabaseName + '''';

if UserName <> '' then
CreateSQL := CreateSQL + ' USER ''' + Username + '''';
if Password <> '' then
CreateSQL := CreateSQL + ' PASSWORD ''' + Password + '''';
pagesize := params.Values['PAGE_SIZE'];
if pagesize <> '' then
CreateSQL := CreateSQL + ' PAGE_SIZE '+pagesize;

if isc_dsql_execute_immediate(@FStatus[0],@ASQLDatabaseHandle,@ASQLTransactionHandle,length(CreateSQL),@CreateSQL[1],Dialect,nil) <> 0 then
CheckError('CreateDB', FStatus);

if isc_detach_database(@FStatus[0], @ASQLDatabaseHandle) <> 0 then
CheckError('CreateDB', FStatus);

{$IfDef LinkDynamically}
ReleaseIBase60;
{$EndIf}
end;


诀窍是isc_dsql_execute_immediate函数。希望这段代码对您有所帮助。以下是此代码来自的Freepascal源文件的链接:

Unit containing CreateDB function

Unit containing API call isc_dsql_execute_immediate

关于delphi - 在Delphi中使用DBExpress创建数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/423808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com