有对InterBase感兴趣的吗?(200分)

  • 主题发起人 主题发起人 barton
  • 开始时间 开始时间
B

barton

Unregistered / Unconfirmed
GUEST, unregistred user!
Inprise公司今年第一季度推出了Interbase6,并打出了OpenSource的旗号。
下载一用,发现果然较InterBase5.6好用。并可以下载IbConsole的Delphi原码。
配合InterBaseExpress4.3版,编写基于InterBase的应用程序真是如虎添翼。
无论是与MSSQL Server 7还是与IBM DB2相比,单就数据库性能上讲,Interbase6
略强,只是没有其它数据库功能完备罢了。如果我是用户我一定选择IB6而放弃其
它价格昂贵的数据库。所以作为程序员如果为用户着想的话(大多数用户没有选择
系统的能力)就应该推荐使用IB6。再说用Delphi的人,应该说IB6是首选。配合
IB6发行的InterbaseExpress 4.3具有以前没有的多项功能:
1.使用InterbaseAdmin部件中的Service几乎可以控制整个IB;
2.新添加的IBExtract部件可以生成数据库的脚本,了解数据库的整个细节;
3.使用IBSQLObj部件可以运行脚本并输出结果;
4.....

如果有哪位大富翁也同我一样对IB有兴趣,愿意交流!mailto:kingway1818@sina.com

现有几个问题:
1.IB6的原码多达8M,似乎都与Unicode相关,它真正的核心在哪?到底是用什么语
言写的?(不是C++更不是Delphi)
2.是否有IBConsole的最新原码?(我从http://www.Interbase.com下载的源码发现
根本不是用IBE4.3的部件写的,但又比IBE4.2高一点。另外代码中居然还有与授
权相关有代码,而发行版的IB6是取消了授权的。)
3.在DLL中使用TIBSQL为何不正常?我们知道用IBSQL访问数据库最省,最直接,最
快,但在DLL中加入IBSQL总提示数据库未打开。而使用IBQuery就正常。
 
ib的opensourse确实不错。而且delphi5中队interbase专门作了很多封装。
如果用空的话。你可以去www.interbase2000.org
www.interbase.com上看,有很多的讨论组和文档。还有应用的话题。
 
作为 Delphi 的爱好者,当然希望使用 Inprise 版的 Database Server ,但是 InterBase
到底多大程度能达到真正的大型数据库的水准呢?充其量,它只能同 Access 竞争而已。
毕竟 Inprise 不是 Database 专业技术厂商。
 
现在想要发布一个小规模的数据库,想来想去还只能选InterBase ,但中文资料太少了。
 
BaKuBaKu的话太差。一听就知道没研究过Interbase。台湾的Delphi大师李维对Interbase
评价就很高。事实上,可以将Interbase同SQL Server相提并论,或者至少和MySQL在一个
档次。难道Microsoft是Database专业技术厂商吗?建议你多看看书,老弟!
To Shenxinaz:
偶打算在经过一段时间研究后就写一本Interbase的技术参考。
 
我现在也在使用IB6,但发觉有如下些问题:
1。运行速度较慢,当我从30000条数据的数据表中提出20000条左右时,却发觉要10多分钟,
有时时间还长。数据库的PAGE SIZE=4096
2。当我查询数据是,如果我只查姓名含“唐”的,但确查出与“唐”一点也不相关的数据
出来.代码为:
Select * from databasegen where xm like '%唐%'
但却查出如:王盘棋、张蕴奇、张继平、蔡其锋等。不信大家可以试一下。
不知为何?
请高人指点。
 
Select * from databasegen where xm like '%唐%'
但却查出如:王盘棋、张蕴奇、张继平、蔡其锋等。不信大家可以试一下。
估计是汉字的编码相同

0101 唐
0201 章
02(0101)03 章小
查询时将中间的取出
 
哈哈,终于找到IB6的ODBC驱动。。。
 
to 3hsoft:
1.试着将Cache设为32M再做查询10分钟的查询太可怕了.
32*1024*1024/4096=8192页.
2.
唐: CD C6
王盘棋 CD F5 C5 CC C6 E5
张蕴奇 D5 C5 D4 CC C6 E6
张继平 D5 C5 BC CC C6 BD
蔡其锋 B2 CC C6 E4 B7 E6

都有 CD C6字样。

 

有关 Interbase 的难题(可能需了解IBX API)

在一个项目中,我将 IBX 中的 TIBSQL 的输出结果抽象成七种类型:
1.Unknown(空值)
2.Integer
3.String
4.Double
5.Datetime
6.Stream(Blob流)
7.Dataset(从表相关数据集)

这里我需要通过一个例子解释第七种类型.
例如一个学生表格,主表保存其一般信息,姓名,性别,民族,籍贯等等;
有两个从表:一个是该学生的家长,最多父母亲两位或空,姓名,工作单位等三四个字段;
另一个是该学生的历年评语信息,包括学年,学期,评语等三四个字段;
两个从表在主表视图中分别占有一个字段,字段名是从表的表名.

在主表行未插入前主索引字段ID是空的,插入时通过触发器生成.
当主表的主索引字段ID为空时,从表的外键字段当然也为空.
当主表在数据库中插入成功后,会取得新的主表主索引字段ID,然后填入从表的相应字段.
问题是:如何在主表字段插入成功后取得这个新的ID?

现在我有两种方法可供选择:
1.执行一个 QUERY 取出主表的全部行,留下最后一行,填充主表数据集;
2.分析表结构,取出主表ID字段触发器所用的生成器,取出生成器的值.
或者用 SELECT MAX(ID) FROM STUDENTS 之类的语句得到最新的ID值.

第一种方法可行但显然不可取,很难预料会有多少行数据产生.
第二种方法显然行不通.因为分析触发器远不是想象的那么简单.
如果主关键字不是整型而是字符型,那么它根本不是从生成器来,也不能通过 MAX 函数获得.

现在谁可以拿出第三种既可行又可取的方法,会有特别的奖励:
1.1000元人民币(需提供 Delphi 源码);
2.1000分大富翁奖分.

提示:
有不有诸如 SELECT LAST FROM STUDENTS 之类的 SQL 语句?

IBX 的 API 有几百种之多.总有一种是查询最后一次执行的一条 INSERT 语句的 FETCH 吧?
 
richar:那儿找到的,能给我一份吗?wulianmin@21cn.com 非常感谢!
 
不要在Win95(98)下用IB,在Win95下IB的可靠性还不如ACCESS(尤其是可能有断电危险的用户).
如果你看一下www.interbase.com上每版IB修正的BUG就会感到可怕!
不过,IB6我没用过
 
我已用InterBase5.6为客户开发了一个销售程序,现在程序升级,
打算改用6.01版,但这个版本推出不久,不知他是否稳定,使用
过他的高手可否给点意见,是现在就升为6.01版,抑或再等一下,
等高一点的版本出来后再升级呢。谢谢!
 
to barton
>>1.试着将Cache设为32M再做查询10分钟的查询太可怕了.
>>32*1024*1024/4096=8192页.
如何设置Cache?我只能在Client端打开Interbase Properties 进入IB Settings
用DBA修改Database Cache(pages):的值(将2048改为8192),但我发觉查询时没
什么变化。页服务器端的IBGuard和IBserver我都无法打开,因此也就无法修改
Database Cache的值。
>>2.
>>唐: CD C6
>>王盘棋 CD F5 C5 CC C6 E5
>>张蕴奇 D5 C5 D4 CC C6 E6
>>张继平 D5 C5 BC CC C6 BD
>>蔡其锋 B2 CC C6 E4 B7 E6
>>
>>都有 CD C6字样。
那请问在查询时我如何避免这种情况?
 
真高兴有很多人在使用INTERBASE.
Interbase的历史就是borland作为数据库厂商的历史.诸位找老点的SQL教材,
里面附录里"主要数据库厂商和产品"赫然就会有borland.

从我对interbase的使用来看.中小应用的性能价格比是最好的了.
它本来就不是大型数据库,不能和oracle比.但和ms sqlserver比较
还很有自己的特点.比如它的UDF,(咱自己不写用别人写的也行 8-) )
我感觉最大的遗憾是1.在store procedure 中不支持事务.(我没找到?)
2.不支持增量备份,即没有日志.(当然,这也许是它快速的原因.)
Interbase7.0的规划中也没提到这点.

3hsoft,...关于查找不正确问题.
你create database时 把语言设置换一下试试.
 
其实inprise公司的数据库技术应该是很不错的〕
大家知不知道sql server6.5及以前的版本都是ms和borland合作开发的
 
sql server6.5以前的版本都是Sysbase for NT , sql server6.5是MS在前版本的
基础上自己开发的。
Dbase,paradox不就是Borland的产品。

to barton:
在OnBeforePost中把ID取回就行了。方法如下:
1。CREATE GENERATOR Student_ID;
SET GENERATOR Student_ID TO 1
2。CREATE PROCEDURE GETID RETURNS (
ID INTEGER
) AS
BEGIN
ID = gen_id(cust_no_gen, 1);
SUSPEND;
END
3。prodedure Form.QueryBeforePost(...)
begin
QryTemp.Sql.Text='Select ID from GetID'
QryTemp.Execute;
Query.FieldByName('Student_ID').AsInteger := QryTemp.Fields[0].AsString;
end;
4。>>在主表行未插入前主索引字段ID是空的,插入时通过触发器生成.
这个就不要了。

真高兴有这么多人在使用INTERBASE!!!
 
顺便提几个问题(我以前也提过):

1:当我新建一个Interbase数据库时,用SYSDBA用户和masterkey密码进入,
然后修改SYSDBA用户的密码,这时可以达到数据库的“加密”,
但如果我卸掉Interbase,再重新安装,
此时我仍然可以用SYSDBA用户和masterkey密码进入。这样的话,
Interbase数据库何来安全?

2:如何在程序运行时。让操作员也能通过程序给Interbase数据库添加用户名及密码。

3:又如何让操作者自已修改Interbase的用户密码.(不在服务器上改),以至于删除用户名。

4:如何在客户端的用户在登录数据库窗口中,用ComboBox1控件获得全部的
Interbase服务器用户列表,以让操作者选择用户进行登录。

 
>>:3hsoft
顺便提几个问题(我以前也提过):

>>>1:当我新建一个Interbase数据库时,用SYSDBA用户和masterkey密码进入,
然后修改SYSDBA用户的密码,这时可以达到数据库的“加密”,
但如果我卸掉Interbase,再重新安装,
此时我仍然可以用SYSDBA用户和masterkey密码进入。这样的话,
Interbase数据库何来安全?
1.其他的也一样,比如sybase,SQL server.都有办法得到数据文件后获得数据的.


2:如何在程序运行时。让操作员也能通过程序给Interbase数据库添加用户名及密码。
IBEXpress IB admin组件已经提供了相关的组件.下载一个就成了.最新的4.4.
>>当然可以用gds32.dll提供的API.还是用组件好.
3:又如何让操作者自已修改Interbase的用户密码.(不在服务器上改),以至于删除用户名。
同2.
4:如何在客户端的用户在登录数据库窗口中,用ComboBox1控件获得全部的
Interbase服务器用户列表,以让操作者选择用户进行登录。
>>同2.有相关属性可以得到.
 
后退
顶部