UniDAC使用教程(一):连接到数据库

下载UniDAC最新版本

Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++Builder, Lazarus (以及 Free Pascal) , Mac OS X, iOS, Android, Linux和64和32位的FreeBSD等等。我们将长期的经验集于这个小组件,提供统一的数据库连接访问(如oracle、微软SQL等等)。这意味着您可以在您的项目之间轻松地切换不同的数据库,以及创建跨数据库应用程序接口。

本篇文章介绍了连接到具有不同提供程序的数据库的过程,以及连接参数的含义。

  • 公共连接属性

    • Provider

    • 用户名和密码

    • 服务器

    • 数据库

    • 端口

  • 提供程序特定属性

    • Oracle

    • SQL Server

    • MySQL

    • InterBase

    • PostgregSQL

    • SQLite

公共连接属性

每个数据库服务器都需要自己的一组参数用于连接(用户名、密码等)。一些参数对于多个服务器是相同的,但参数含义可能因服务器而异。工发组织为受支持的数据库服务器提供所有类型的参数。如果某个参数不用于某个提供程序,它将在“连接”对话框中被禁用,而不用于连接。工发组织支持以下参数:

Provider

这是应该设置的第一个参数。它指定将用于连接的提供程序和其他可用参数。

用户名和密码

这些属性用于每个数据库提供程序对客户端应用程序进行身份验证。
服务器

通常,此属性用于提供数据库服务器所在网络中计算机的名称或IP地址。如果SQL Server、MySQL和Interbase提供程序的server属性为空,则unidac将尝试连接到localhost。

  • Oracle——在客户机模式下,您应该指定出现在tnsnames.ora配置文件中的服务器名称。您还可以设置homename选项来指定要在客户机模式下使用的已安装客户机。
    如果在直接模式下连接到Oracle服务器,则应以特殊格式指定server属性的值:host:port:sid。主机是服务器的IP地址或DNS名称,端口是服务器侦听的端口号,sid是服务器的Oracle系统标识符。

  • SQL Server——应指定运行SQL Server的网络中计算机的名称或IP地址。如果您的SQL Server使用的端口与默认端口不同,则可以通过以下方式连接到该端口,指定端口号:hostname、port number。

  • ASE、MySQL和PostgreSQL——您应该指定运行数据库服务器的网络中计算机的名称或IP地址。

  • ODBC——您应该指定ODBC数据源名称(DSN)、包含数据源信息的文件名(文件DSN)或ODBC连接字符串

  • DB2——应该为服务器属性指定数据库名称

数据库

此属性用于Access、Advantage、SAP Sybase ASE、DBF、Interbase、MySQL、NextUSB、PostgreSQL、SQL Server和SQLite提供程序。它为连接指定初始数据库。在SAP Sybase ASE、MySQL和SQL Server上,当连接处于活动状态而不重新连接时,可以更改数据库值。如果未分配数据库,UniDAC的行为将取决于选定的provider:

  • MySQL——将不选择当前数据库。这意味着您需要在查询中显式指定数据库名称。

  • SQL Server和ASE——当前SQL Server登录的默认数据库将用作连接的默认数据库。为了连接到SQL Server Compact Edition,此属性用于提供数据库文件名。

端口

此属性用于SAP Sybase ASE、MySQL和PostgreSQL提供程序。它指定TCP/IP连接的端口号。

  • MySQL——默认值为3306。

  • PostgreSQL——默认值为5432。

  • ASE——默认值为5000。

提供程序特定属性

除了上面描述的连接选项之外,还有几个特定的选项来管理每个提供者的连接行为。这些选项在每个提供程序的特定于提供程序的Notes文章中进行了描述:Oracle、SQL Server、MySQL、Interbase、PostgreSQL和SQLite。打开与您感兴趣的提供者对应的文章,并在文章中找到tuniconnection的特定选项描述。下面将介绍几个重要的特定连接选项。

Oracle

使用Oracle提供程序,您可以以两种模式连接到服务器:客户机模式和直接模式。以客户机模式连接需要在客户机上安装Oracle客户机。直接模式下的连接不需要Oracle客户机,但是这种模式有一定的局限性。有关更多信息,请参阅文章中的Connecting in Direct Mode部分(将工发组织与Oracle结合使用)。

SQL Server

SQL Server提供程序可以通过三种客户端类型之一进行连接,这些客户端类型可以使用特定于OLEDBProvider的tuniconnection选项进行更改。默认情况下,此选项设置为prauto。此值表示提供程序将首先尝试打开SQL本机提供程序。如果此提供程序不可用,则将打开OLE DB提供程序。要连接到SQL Server Compact版本,必须将OledBProvider选项设置为prcompact。此值使名称以compact开头的所有特定选项生效。应在CompactVersion特定选项中指定要使用的SQL Server Compact版本。默认情况下,将根据数据库文件版本选择SQL Server Compact版本。如果该文件不存在,或者该文件不是有效的数据库文件,则将使用CompactVersion选项来确定要加载的服务器版本。

MySQL

mysql提供程序可以直接连接到mysql服务器,也可以使用客户端库libmysqld.dll。此行为由直接特定选项控制。默认情况下,Direct设置为true。如果直接切换到false,则需要在应用程序中部署libmysqld.dll。

为了连接到带有mysql embedded server的数据库,应该将embedded-specific选项的值切换为true。其默认值为假。如果Embedded设置为true,则忽略direct的值。带有共享目录的嵌入式服务器库应该与应用程序一起部署。数据路径应该在嵌入式服务器的配置文件中指定。

InterBase

Intelbase提供程序可以通过TCP/IP、NetBEUI和SPX等网络协议连接到服务器。将用于连接的网络协议可以通过特定于协议的选项指定。

PostgreSQL

PostgreSQL提供程序直接连接到PostgreSQL服务器,不使用PostgreSQL客户端库。

SQLite

SQLite提供程序可以使用sqlite客户端库sqlite3连接到数据库。您可以使用外部SQLite3库或嵌入式sqlite3引擎。此行为由选项控制。默认情况下,direct设置为false,在这种情况下,sqlite提供程序在path环境变量中指定的目录中搜索客户端库。如果数据库文件不存在,则SQLite可以自动创建该文件。为此,应使用ForceCreateDatabase特定选项。