现在的位置: 首页 > 综合 > 正文

Delphi中使用ADO访问Paradox表

2017年12月18日 ⁄ 综合 ⁄ 共 1537字 ⁄ 字号 评论关闭

Paradox是Borland早期推出的桌面型数据库,尽管现在已经趋于淘汰,但是依然有部分企业仍在用Paradox数据库。

Paradox数据库有一些特性(也可以说是缺点)是和现有数据库完全不一样的,这导致了程序员在使用Paradox数据库时往往陷入困境,现在就介绍一些关于Paradox数据库的信息,希望对大家有所帮助。

首先,Paradox推出是在Ansi-SQL-92标准推出之前,所以Paradox并不完全遵守SQL-92标准,这就可以解释为什么Paradox中许多特性和现在的通用数据库是如此的不同。要操作Paradox表,在Delphi下最好的引擎就是BDE,可以说,除了Delphi的BDE,其他对于Paradox的引擎如ODBC Driver for Paradox, JDBC, Jet OLE DB都有不少的问题。因此,对于新系统的开发,如果要用Paradox,BDE是最好的选择。

现在言归正传,如何用ADO来访问Paradox?

Java下的JDBC由于本人不大熟悉,这里就不多说了。Paradox另外的2个驱动分别是ODBC driver for Paradox, Jet OLE DB.ODBC driver for Paradox 在5.x之后就不再更新,而Jet OLE DB 在操作Paradox时也分为两种:一种是Jet独立的引擎,另外一种是在BDE之上为JET提供的驱动。具体信息可以参考以下文章

http://support.microsoft.com/kb/263561/
http://support.microsoft.com/kb/230126/EN-US/
http://support.microsoft.com/kb/239114/

在用ADO连接Paradox时,在ADO的Provider中选择Jet,然后使用以下函数设置连接字符串

function GetParadoxConnectionString(Path: string; Password: string): string;

var
  s: string;
begin
  s := 'Provider=Microsoft.Jet.OLEDB.4.0;';
  s := s + 'Data Source=' + Path + ';';
  s := s + 'Extended Properties=Paradox 7.x;Persist Security Info=False;';
  s := s + 'Mode=Share Deny None;';
  if Password <> '' then
    s := s + 'Jet OLEDB:Database Password=' + Password;
  Result := s;
end;

Path为Paradox数据库所在的路径,Password在访问加密的Paradox表时指定此变量才可以访问到加密的表。

一些关于用ADO访问Paradox的问题(实际上是ODBC和Jet的问题)

1.SQL 语句必须遵循Jet SQL语法标准,具体标准可以参考相关文档。

2.Jet 3.51只能对Paradox进行Import / Export 操作,无法更新或修改数据。

3.Jet 4.0可以对Paradox进行数据操作,但是前提是Paradox表必须设置了Key Fields.如果Paradox 表没有KeyFields,那么就只能进行读操作。

4.Paradox表的索引文件的后缀名为*.PX,并且要求和表名相同。

5.使用SQL语句去创建Paradox表时,某些字段类型无法被创建,比如$(Money)

6.Paradox的某些字段类型在Delphi中无法识别,比如说Paradox OLE.

7.Jet 操作Paradox性能比BDE要差了不少。

 

主要就介绍这些,大家有兴趣的话可以和我交流,谢谢。

抱歉!评论已关闭.