这个标题对我来说很有趣-尽管标题几乎是无用的。我已经使用Firebird很长时间了,但是直到最近才发现一种有趣的行为。
我正在使用嵌入式firebird 1.5,并且注意到如果我在数据库中塞满blob(比如说价值10mb),数据库的大小就会增加。然后,我可以删除数据库中的所有字段,并且数据库的文件大小保持其扩展大小。目前,它的大小为20mb,完全为空。
我知道firebird已将其内置到其体系结构中(用于快速索引,速度问题等),但是我一直认为它会减少到最初的〜2mb默认值。
是否有人建议“缩小”文件大小?原因是这是一个空间意识的问题。如果我有大量的工作空间,我将不在乎。但是,事实并非如此,我需要让一切尽可能最佳
谢谢!
我创建了以下存储过程
SET TERM ^ ;
CREATE OR ALTER PROCEDURE EDIT_FATURA (fat_id integer, mflag integer) as
begin
update inv_lines set mflag = :mflag where fat_id = :fat_id;
delete from inv_lines_temp where 1=1 ;
insert into inv_lines_temp select ID,CODE_ID,ADET,UNIT_PRICE,LINE_NET,LINE_VAT,KDV,LINE_GRAND,CRN
from inv_lines where fat_id = :fat_id;
end^
SET TERM ; ^
GRANT SELECT,UPDATE ON INV_LINES TO PROCEDURE EDIT_FATURA;
GRANT SELECT,INSERT,DELETE ON INV_LINES_TEMP TO PROCEDURE EDIT_FATURA;
GRANT EXECUTE ON PROCEDURE EDIT_FATURA TO SYSDBA;
Run Code Online (Sandbox Code Playgroud)
并使用以下代码,我使用我的Delphi应用程序调用存储过程
dm.q_genel.Close;
dm.q_genel.SQL.Clear;
dm.q_genel.SQL.Add('EXECUTE PROCEDURE EDIT_FATURA(:p1,:p2)');
dm.q_genel.ParamByName('p1').AsInteger := fid;
dm.q_genel.ParamByName('p1').AsInteger := …Run Code Online (Sandbox Code Playgroud) 我需要一个选择的帮助.我想为我的.NET网站选择一个database_management_system.我目前的变种是:
- MariaDB
- PostgreSQL
- Firebird
我使用的是MS SQL,没有经验,无法比较它们.
我需要的是:.NET的稳定性,速度,自由和良好的ORM,帮助我选择其中一个.
有一刻我更喜欢Postgres,但不知道为什么.
补充:我认为我需要一个真正的杀手功能来改变我的观点.
我正在使用firebird数据库,它似乎没有像sql server那样的ROWNUM或ROW_NUMBER(),所以我不能按照这里解释的程序.
我有一个查询,其结果数据集大于我的系统内存可以容纳的数据集.我正在尝试以较小的块加载数据集.我有一系列通用查询,我无法修改它们可能是任何东西.我知道我能做到
select first 5000 * from
(-my actual query here-)
Run Code Online (Sandbox Code Playgroud)
获得前5000条记录.但是我怎样才能获得接下来的5000条记录.
谢谢
我使用firebird db和Delphi XE2开发了一个客户端/服务器应用程序.问题是客户端上的TSQLConnection组件自动将HostName属性设置为localhost.我想知道,如何编写代码,使用户可以在客户端第一次启动时设置HostName.
我将TSQLConnection组件放在客户端的数据模块上.
在主窗体上,我为用户设置了一个选项,用于设置HostName属性,并使用以下代码分配用户在TextBox中输入的值:
Database.SQLServer.Params.Add('HostName='+edtHostName.Text);
Run Code Online (Sandbox Code Playgroud)
但似乎一旦程序启动,TSQLConnection组件将主机名设置为localhost,我无法将其设置为用户主机名.谁能帮帮我吗
我在COMPUTER_WITH_DATABASE哪里安装了超级服务器firebird(windows).现在我需要制作c#应用程序,它将连接到此COMPUTER_WITH_DATABASE并创建文件.fdb,例如database.fdb以后能够使用例如字符串的一部分从其他计算机连接,如:
COMPUTER_WITH_DATABASE\C:\ database.fdb
但是如何在c#中使用fb API呢?
我有两个申请.一个是主应用程序,其中存在按需同步,从一个表到另一个表(不要问我为什么).其他应用程序将数据从同步表填充到主表.
当其他应用程序正在运行并填充表时,我需要在主应用程序中知道进程正在运行并禁止在主应用程序中按需同步.我正在考虑制作一些表并在一次交易中使用同步锁定它.完成填充数据后释放锁定.
我对如何在delphi中执行此操作的方式感兴趣,如何在同步和主应用程序中设置事务?如何检查表是否已锁定?目标也是同步应用程序停止释放锁定.
谢谢
我正在考虑将Firebird与我的应用程序一起使用.我想知道该firebird.msg文件的用途.是否包含在应用程序安装程序包中的可选或必需文件?
我们正在努力将来自不同源系统(Firebird,Oracle,SQL Server)的数据迁移到一个目标系统(SQL Server).
我们从Firebird连接的连接异常中读取数据时出错.
我们正在使用的代码
用于创建SourceSystem对象的静态DbFactory类
public static class DbFactory
{
public static DbManager CreateDb(SourceDbType type)
{
switch (type)
{
case SourceDbType.Sql:
return new SqlDbManager();
case SourceDbType.FireBird:
return new FireBirdDbManager();
}
return null;
}
}
public enum SourceDbType
{
Sql, FireBird
}
Run Code Online (Sandbox Code Playgroud)
基础DbManager类
public abstract class DbManager
{
private DbConnection m_DbConnection;
public virtual DbConnection DbConnection
{
get
{
if (m_DbConnection == null)
{
m_DbConnection = new SqlConnection();
}
return m_DbConnection;
}
set
{
this.m_DbConnection = value; …Run Code Online (Sandbox Code Playgroud) 我正在使用Firebird SQL。如下所述,查询返回4行,如图所示。
SELECT a.EPS_ID,b.C_NAME,c.AY_YR_NAME,d.S_NAME,e.E_NAME
FROM
TBLEXAMPLANNER_S_MSB a,
TBLCLASS_MSB b,
TBLACADEMICYEAR_MSB c,
TBLSUBJECTS_MSB d,
TBLEXAMTYPE_MSB e
WHERE
a.EPS_CLASS_ID=b.C_ID
AND a.EPS_SESSION_ID=c.AY_ID
AND a.EPS_SUB_ID=d.S_ID
AND a.EPS_PE_ID=e.E_ID
Run Code Online (Sandbox Code Playgroud)
我希望它只返回1(一个)行
EPS_ID C_NAME AY_YR_NAME S_NAME E_NAME
---------------------------------------------------
7 5 2016-2017 English FA1
Run Code Online (Sandbox Code Playgroud)
我正在使用以下查询,但它不起作用。
SELECT a.EPS_ID,MAX(b.C_NAME) AS XT,c.AY_YR_NAME,d.S_NAME,e.E_NAME
FROM
TBLEXAMPLANNER_S_MSB a,
TBLCLASS_MSB b,
TBLACADEMICYEAR_MSB c,
TBLSUBJECTS_MSB d,
TBLEXAMTYPE_MSB e
WHERE
a.EPS_CLASS_ID=b.C_ID
AND a.EPS_SESSION_ID=c.AY_ID
AND a.EPS_SUB_ID=d.S_ID
AND a.EPS_PE_ID=e.E_ID
GROUP BY a.EPS_ID,d.S_NAME
Run Code Online (Sandbox Code Playgroud)
错误消息是:
选择列表中的表达式无效(聚合函数或GROUP BY子句均未包含)
firebird ×10
delphi ×3
c# ×2
database ×2
sql ×2
delphi-xe2 ×1
firebird2.1 ×1
firebird2.5 ×1
group-by ×1
hostname ×1
mariadb ×1
postgresql ×1
t-sql ×1
transactions ×1