标签: firebird

Firebird 事件和防火墙问题 (TIBEvents)

我将使用Firebird Events的强大功能以及带有 TIBEvents 组件的 delphi 应用程序。

问题是防火墙,并不是每次都有正确的角色,当我尝试注册事件时,应用程序停止响应,我必须等待......

我能怎么做?

我还尝试在单独的线程中调用寄存器函数,但结果相同。

function RegisterEvents(data : Pointer) : Integer;
begin
  with Form1 do begin
    DBOspitiEvent.Registered := true; 
  end;
end; //<-- AFTER THIS, APPLICATION IS BLOCKED (for a while)

procedure TForm1.Button2Click(Sender: TObject);
var
  ThreadId : Cardinal;
  ThreadHandle : Integer;
begin
  ThreadHandle := BeginThread(nil,0,@RegisterEvents,nil,0,ThreadId);
  if ThreadHandle = 0
    then ShowMessage('Error');
end;
Run Code Online (Sandbox Code Playgroud)

delphi firebird

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

在 Python 脚本中无法连接本地数据库的 Firebird

我可以使用 Firebird ISQL 工具 (Firebird 3.0.4) 通过以下命令连接到我的 Firebird 数据库: connect "C:\Documents\database.db" user 'USER' password 'PASSWORD';

当我想在Python脚本(Windows10 64位上的Python v3.7.7)中,在包括fdb v2.0.1甚至firebirdsql v1.1.3的虚拟环境中执行此操作时,我不能并且系统地得到一个错误。

import fdb
con = fdb.connect(database="C:\Documents\database.db", user='USER' password='PASSWORD'')
Run Code Online (Sandbox Code Playgroud)

DatabaseError: ('连接到数据库时出错:\n- SQLCODE: -902\n- 无法完成对主机“xnet://Global\FIREBIRD”的网络请求。', -902, 335544721)

或者

con = fdb.connect(host='localhost', database="D:\Documents\database.db", user= 'USER' password= 'PASSWORD'')
Run Code Online (Sandbox Code Playgroud)

DatabaseError: ('连接到数据库时出错:\n- SQLCODE: -902\n- 无法完成对主机“localhost”的网络请求。\n- 无法建立连接。', -902, 335544721)

或者

con = fdb.connect(dsn="localhost:C:\Documents\database.db", user='USER' password='PASSWORD'')
Run Code Online (Sandbox Code Playgroud)

DatabaseError: ('连接到数据库时出错:\n- SQLCODE: -902\n- 无法完成对主机“localhost”的网络请求。\n- 无法建立连接。', -902, 335544721)

或者

import firebirdsql
con = firebirdsql.connect(host='localhost', database="D:\Documents\database.db", user='USER' password='PASSWORD'')
Run Code Online (Sandbox Code Playgroud)

如果您有任何想法,欢迎您,因为我被困住了。

python firebird fdb

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

DBD::Firebird 编码/解码

在此示例中,Firebird 返回未解码的字符串。是我没有正确设置数据库还是 Firebird 就是这样工作的?

\n
#!/usr/bin/env perl\nuse warnings;\nuse 5.10.0;\nuse utf8;\nuse open qw( :std :utf8 );\nuse Devel::Peek;\nuse DBI;\n\nmy ( $db, $dbh, $sth, @array );\nmy $table = 'test_encoding';\nmy $create = "CREATE TABLE $table ( name varchar(32) )";\nmy $insert = "INSERT INTO $table ( name ) VALUES ( ? )";\nmy $select = "SELECT * FROM $table";\nmy $value = '\xc3\xa4';\n\n$db = '/home/me/my_firebird_db';\n$dbh = DBI->connect(\n    "dbi:Firebird:db=$db", 'user', 'password',\n    { PrintError => 0, RaiseError => 1, ib_charset => 'UTF-8' }\n);\n$sth = $dbh->do( "DROP TABLE $table" );\n$sth …
Run Code Online (Sandbox Code Playgroud)

perl firebird dbi character-encoding

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

当使用其他数据库(例如Oracle)时,Firebirds"STARTING WITH"的等价物是什么?

我正在调查更新我们的应用程序以使用Firebird以外的数据库服务器的可能性.我们依靠"STARTING WITH"来访问我们的分层数据.没有它,我看不出如何在没有经过一些严肃的重新设计的情况下迁移到另一个数据库.

如果您不熟悉"STARTS WITH",它只是检查字符串字段是否以特定字符串开头,例如......

WHERE 'This is a test' STARTS WITH 'This is' ... 
Run Code Online (Sandbox Code Playgroud)

会回归真实.如果列已建立索引,则索引将用于比较.

其他数据库服务器(尤其是Oracle/MSSQL)是否支持"STARTING WITH"(或"STARTS WITH")?

database oracle firebird

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

实体框架插入不起作用.非典型错误

我试图在Entity Framework中向我的实体插入行.它适用于第一次插入操作,但它不适用于第二次插入操作.我使用Framework 4,C#和FireBird数据库.这是我的代码部分

rec = new T_MEDIAPLAN_REC();
//
//... initialization for T_MEDIAPLAN_REC
//
BossTVEntities.AddToT_MEDIAPLAN_REC(rec);
BossTVEntities.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

它在第二次SaveChanges()调用后给出了这个异常:

"The changes to the database were committed successfully, but an error occurred 
while updating the object context. The ObjectContext might be in an inconsistent 
state. Inner exception message: AcceptChanges cannot continue because the 
object's key values conflict with another object in the ObjectStateManager. 
Make sure that the key values are unique before calling AcceptChanges."
Run Code Online (Sandbox Code Playgroud)

我试着看看DataBase.目标实体中有两个插入的记录具有不同的Id.所以,我不知道这种行为的原因是什么.

我使用Visual Studio 2010 SP1 Professional,Firebird 2.5和.NET提供程序,C#,.NET Framework 4.0

它不适用于数据库中的每个实体.

.net firebird frameworks entity

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

偏移951处的请求BLR无效

我有由Firebird 1.0创建的gdb文件(25GB另一个~38 GB).在打开一些表时,它们显示错误[运行Firebird服务器1.0(停止Interbase 7.5)] - >无效请求BLR在偏移951处是什么意思?

另外我想将它转换为Interbase 7.5它有ODS版本.10(通过gstat -h).

有任何想法吗 ??

firebird interbase database-migration

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

如何仅从Select sum语句返回非零值

我有一个返回2列和多行的查询.我如何只返回一个非0或null的和值?

表" audit"是这样的:

parent_link   integer;
dr            smallint
amount        decimal(18,2)

select parent_link, sum(case dr when 1 then amount else -amount end)
from audit where books = 3 group by parent_link
Run Code Online (Sandbox Code Playgroud)

我正在检查dr列中的值列中的值是否为1和0值.

此查询起作用并返回几千行,其中0表示总和结果,2表示总和中的值.我只想返回具有总和值的行.

任何帮助将非常感激.

sql firebird select sum

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

火鸟强行消除僵局

我正在使用Delphi IBQuery和IBTransaction组件使用此查询更新数据库中的所有记录:

UPDATE INVOICES SET BLK = 0;
Run Code Online (Sandbox Code Playgroud)

当用户打开另一个客户端应用程序时,它会在某些记录上留下死锁(由用户打开).

问题在于我的应用程序必须完成上面的查询.

是否有可能实施某种解决方案来强制删除死锁?例如一个SQL查询?

Firebird版本是在Windows 7上运行的2.1.2.18118

delphi firebird deadlock database-deadlocks

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

如何在firebird表中找到使用生成器的字段列表?

如何从firebird表中选择使用生成器进行自动增量的字段名称.

sql firebird

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

在Firebird中未知的令牌

此查询在firebird上抛出错误,如何解决该错误?

  SELECT EMPNO,SAL 
         FROM EMP E 
         where EMPNO = (SELECT MAX(DEPTNO) FROM DEPT D WHERE E.ENAME NOT like (SELECT TOP 1 ENAME 
                                                                              FROM emp E1 
                                                                              WHERE E1.EMPNO=D.DEPTNO))
         OR 1 = (SELECT MAX(DEPTNO)
                 FROM DEPT D 
                 WHERE E.ENAME like substring('NAME111',1,5))  ORDER BY EMPNO;
Run Code Online (Sandbox Code Playgroud)

这是错误.

以下错误信息描述了失败

ODBC调用= SQLPrepareW()

SQL状态= HY000

原始错误= -104(FFFFFF98)

错误消息= [ODBC Firebird驱动程序] [Firebird]动态SQL错误

SQL错误代码= -104

令牌未知 - 第1行,第111列

mysql sql firebird firebird-3.0

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