标签: firebird-embedded

连接到 D2010 上嵌入的 Firebird

我从http://sites.google.com/site/dbxfirebird/下载了 Firebird DBX 驱动程序,并且我已经能够编译“测试连接”项目并使其运行。我将它指向我的测试数据库,如下所示:

procedure TMainForm.Button1Click(Sender: TObject);
var C: TSQLConnection;
begin
  C := TSQLConnection.Create(Self);
  try
    C.DriverName := 'FirebirdConnection';
    C.Params.Add('User_Name=SYSDBA');
    C.Params.Add('Password=masterkey');
    C.Params.Add('Database=C:\fbtest\test.fdb');
    C.Open;
    if C.Connected then
      ShowMessage('Connection is active')
  finally
    C.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它工作正常。但是当我将完全相同的代码放入不同的项目中时,它不起作用。我已将 fbclient.dll(Firebird 嵌入式驱动程序 DLL,重命名为 fbclient)、其所有依赖项和 dbxdrivers.ini 文件复制到与项目的 EXE 运行所在的同一文件夹中。我看不出任何原因这不应该工作,但是对 .Open 的调用失败并显示:

项目 Project1.exe 引发异常类 TDBXError 并显示消息“未知驱动程序:FirebirdConnection”。

同样,这是对 Open 的调用。对 DriverName 的分配工作得很好。以前有人见过这个问题吗?为什么完全相同的代码在测试项目中可以工作,但不同的代码却不能工作,有什么方法可以修复它吗?

delphi firebird firebird-embedded

2
推荐指数
1
解决办法
3276
查看次数

Firebird数据库不断扩大

这个标题对我来说很有趣-尽管标题几乎是无用的。我已经使用Firebird很长时间了,但是直到最近才发现一种有趣的行为。

我正在使用嵌入式firebird 1.5,并且注意到如果我在数据库中塞满blob(比如说价值10mb),数据库的大小就会增加。然后,我可以删除数据库中的所有字段,并且数据库的文件大小保持其扩展大小。目前,它的大小为20mb,完全为空。

我知道firebird已将其内置到其体系结构中(用于快速索引,速度问题等),但是我一直认为它会减少到最初的〜2mb默认值。

是否有人建议“缩小”文件大小?原因是这是一个空间意识的问题。如果我有大量的工作空间,我将不在乎。但是,事实并非如此,我需要让一切尽可能最佳

谢谢!

database firebird firebird-embedded

2
推荐指数
1
解决办法
1402
查看次数

查找 Firebird 数据库中作为主键的所有列名

我需要在表中查找作为主键的所有列并返回它们的列名。

有没有办法用Connection.GetSchema()Firebird .net API的方法来实现这一点?如果没有,SQL 语句将如何实现这一点?

我不需要完整的代码示例,但需要一些有关如何执行此操作的指导。

在我的场景中,我有一个 Firebird 嵌入式数据库,我想从数据库模式生成存储的 prodecures。我需要主键列名称在表上生成触发器,将一些元数据插入到跟踪表中。

我使用最新版本的 Firebird 和最新的 .net 连接器 (v.2.5.5)

如果您需要有关我的问题的更多信息,请发表评论!

.net c# firebird primary-key firebird-embedded

2
推荐指数
1
解决办法
3912
查看次数

firebird使用.net提供程序嵌入多个插入

我正在开发一个应用程序,它将使用firebird嵌入式和/或postgres,具体取决于用户的复杂程度.firebird嵌入式的论点是应该减少安装,防火墙,UAC等问题.到目前为止,postgres就像在云上行走一样,但我遇到了火鸟的路障.该应用程序是.net,我正在使用此提供程序http://www.firebirdsql.org/en/net-provider/版本3.0.2

一切都在技术上有效,但嵌入了firebird我每秒只插入大约100条记录,而postgres每秒超过3000条记录!使用postgres,我将大量的INSERT INTO ...语句作为一个命令启动,这很好.对于火鸟来说,它并不顺利.这是什么工作(慢慢地)

String query = @"INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
";
FbScript fbs = new FbScript(query);
fbs.Parse();
FbConnection fbc = new FbConnection(ConnectionString);

FbBatchExecution fbe = new FbBatchExecution(fbc, fbs);
fbe.Execute(true);
Run Code Online (Sandbox Code Playgroud)

但是,我试图没有解析.类似于第二个答案的东西使用isql或者在这里http://www.firebirdfaq.org/faq336/ 对firebird数据库运行多个插入查询

String sql = @"set term ^ ;
EXECUTE BLOCK AS BEGIN
INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
end^";

FbCommand cmd = new FbCommand();            
PrepareCommand(cmd, connection, (FbTransaction)null, CommandType.Text, sql, commandParameters, …
Run Code Online (Sandbox Code Playgroud)

.net c# firebird firebird-embedded

1
推荐指数
1
解决办法
1997
查看次数

Firedac - 连接到Firebird 2.5嵌入式

无论我做什么,我似乎无法使用Firedac连接到Firebird 2.5嵌入式数据库.有趣的是,昨天它似乎工作,现在突然间它不会.

相反,为了让我的脑袋突然停止工作,我开始重建一个干净的项目,这样我就可以一步一步地弄清楚发生了什么.我将下载的软件包的全部内容从Firebird添加(复制)到我的应用程序目录和数据库本身.

为了避免文件夹问题,我设置了Delphi环境选项,将所有文件(和exe放在同一目录中.然后我使用了Firebird*.doc文件夹中的建议,并将fbembed.dll重命名为fbclient.dll.一些Firedac Q&A关于我读过的问题,Firedac需要fbembed.dll文件.好吧,我已经尝试了两种方式,它无论如何都不会工作....).但是让我坚持第一个问题fbclient.dll.

为了建立连接,我在数据模块上放了一个FDPhysFBDriverLink1和一个FDConnection1.

现在FDPhysFBDriverLink1:它的BaseDriverID是FB.对于DriverID,我尝试了两个建议:首先使用'FB',然后提供fbclient.dll的完整路径.没有人似乎有所作为.

当我转到Firedac Connection编辑器并输入我的数据库文件的路径时,我得到"无法加载供应商库(fbclient.dll或fbembed.dll)....错误.但这两个文件都在应用程序exe文件夹中(就像在embarcadero网站上建议的那样.那么Firedac在哪里寻找文件?我对Firebird和Firedac有点厌倦,因为他们不能简单地解释为什么连接成功必须做的事情.他们给的只是一些模糊的选项,它们都不起作用.添加这个 - 添加......最后......失败.

因此,如果有人有直接回答如何做到这一点的经验(没有链接,请...我已经看过并尝试过所有这些)我会非常感激.尝试建立一个简单的连接几天是非常愚蠢的.我也尝试过与Unidac类似的结果.所以在我第99次精神崩溃之前,我该怎么办才能完成连接?

delphi firebird firebird-embedded firedac delphi-xe6

1
推荐指数
1
解决办法
4921
查看次数

从Windows本地网络连接到Firebird数据库

我已经写了一个小型的Python应用程序了几周了。该应用程序从Firebird数据库读取数据,并将其复制到另一个DB。我正在使用嵌入式Firebird的FDB。

这是我的连接代码。

def createConnectionTo(path):
    try:
        connection = fdb.connect(
            database=path,
            user='SYSDBA',
            password='masterkey',
            charset='WIN1252'
        )
        print("Connessione al database riuscita!\n")
        return connection
    except fdb.fbcore.DatabaseError as details:
        errorMsg = "ERRORE: impossibile connettersi al database!\nPer favore scegliere un altro file.\n\nDETTAGLI\n"+str(details).replace("\\n", "\n")+"\n"
        print(errorMsg)
        return False
    except fdb.fbcore.ProgrammingError as details:
        errorMsg = "ERROR: bad parameters value!\nPlease check your connection code.\nDETAILS: "+str(details)+"\n"
        print(errorMsg)
        return False
    except Exception as errorMsg:
        print("ERRORE: "+str(errorMsg))
        input("Premi un ENTER per chiudere la finestra.")
        return -1
Run Code Online (Sandbox Code Playgroud)

该代码适用于我计算机内的文件夹,但莫名其妙地不适用于我们本地网络中共享的文件夹。我使用os.path.exists()检查Python是否能够找到所选的共享文件夹,并且它始终返回True。

我一直收到此错误,而且我不知道如何解决该错误,即使我怀疑它与斜杠转换问题有些相关。

('Error while connecting to …
Run Code Online (Sandbox Code Playgroud)

python firebird firebird-embedded

0
推荐指数
1
解决办法
848
查看次数