Collection Contents 上一页 下一页 PDF

ASA SQL 参考

SQL 语句

CONNECT 语句 [ESQL] [Interactive SQL]


说明 

此语句用于建立到数据库的连接。

语法 1 

CONNECT
TO engine-name ]
DATABASE database-name ]
AS connection-name ]
USER ] userid IDENTIFIED BY password

engine-namedatabase-nameconnection-nameuseridpassword :
identifier | string | hostvar }

语法 2 

CONNECT USING connect-string

connect-string : { identifier | string | hostvar }

参数 

AS 子句    通过指定 AS 子句可对连接进行命名(可选)。这允许建立到同一个数据库的多个连接,或者到同一个或不同的多个数据库服务器的多个连接,所有连接都是同时发生的。每个连接都有自己的关联事务。事务之间有时甚至会发生锁定冲突。例如,当试图从两个不同的连接修改同一数据库中的同一记录时,就会出现这种情况。

语法 2    connect-string 是格式为 keyword=value 的参数设置的列表,必须用单引号将它括起来,并用分号隔开。

有关连接字符串的详细信息,请参见 连接参数

用法 

CONNECT 语句建立数据库连接,该数据库在由 engine-name 标识的服务器上运行的 database-name 来标识。

嵌入式 SQL 行为    在嵌入式 SQL 中,如果未指定 engine-name,将采用缺省的本地数据库服务器(启动的第一个数据库服务器)。如果未指定 database-name,则采用给定服务器上的第一个数据库。

WHENEVER 语句、SET SQLCA 和一些 DECLARE 语句不生成代码,因此它们在源文件中可以出现在 CONNECT 语句之前。在其它情况下,在执行一条成功的 CONNECT 语句之前不能执行任何语句。

用户 ID 和口令用于对所有动态 SQL 语句执行权限检查。

可以在不显式指定口令的情况下连接,方法是对口令使用主机变量,并将该主机变量的值设置成空指针。

如果以具有 DBA 权限的用户 ID 连接,则不用指定口令就可以连接到其它用户 ID。(dbtran 的输出要求此功能。)

有关连接算法的详细说明,请参见疑难解答连接

注意 
对于 Adaptive Server Anywhere,在嵌入式 SQL 中只有语法 1 有效。对于 UltraLite,语法 1 和语法 2 都可以用于嵌入式 SQL。

Interactive SQL 行为    如果在 CONNECT 语句中未指定任何数据库或服务器,Interactive SQL 将保持与当前数据库(而不是与缺省的服务器和数据库)的连接。如果指定了数据库名称但未指定服务器名称,Interactive SQL 会尝试连接到当前服务器上的指定数据库。如果指定了服务器名称但未指定数据库名称,Interactive SQL 会连接到指定服务器上的缺省数据库。

例如,如果与数据库连接时执行以下批处理语句,则将在同一个数据库中创建两个表。

CREATE TABLE t1( c1 int );
CONNECT DBA IDENTIFIED BY SQL;
CREATE TABLE t2 (c1 int );

在执行一条成功的 CONNECT 语句之前,不能执行任何其它数据库语句。

在用户界面中,如果未指定口令或用户 ID 和口令,系统将提示用户键入缺少的信息。

当 Interactive SQL 在命令提示符模式下(从命令提示符启动 Interactive SQL 时指定了 -nogui)或批模式下运行,或者未使用 AS 子句执行 CONNECT 时,将打开一个未命名的连接。如果已有其它未命名的连接打开,则以前的那个连接将自动关闭。否则,在运行 CONNECT 时不关闭现有的连接。

对多个连接的管理是通过当前连接的概念来实现的。在成功执行连接语句后,新连接变成当前连接。要切换到不同的连接,请使用 SET CONNECTION 语句。DISCONNECT 语句用于删除连接。

在 Interactive SQL 中,连接信息(包括数据库名称、用户 ID 和数据库服务器)出现在 [SQL 语句] 窗格上方的标题栏中。如果未连接到数据库,标题栏中将显示 [未连接]。

注意 
在 Interactive SQL 中,语法 1 和语法 2 均有效。
权限 

无。

副作用 

无。

另请参见 
标准和兼容性 
示例 

以下是 CONNECT 在嵌入式 SQL 中的用法示例。

EXEC SQL CONNECT AS :conn_name
USER :userid IDENTIFIED BY :password;
EXEC SQL CONNECT USER "DBA" IDENTIFIED BY "SQL";

以下示例假定示例数据库 (asademo.db) 已启动。

从 Interactive SQL 连接到数据库。Interactive SQL 提示您输入用户 ID 和口令。

CONNECT

以 DBA 身份从 Interactive SQL 连接到缺省数据库。Interactive SQL 提示您输入口令。

CONNECT USER "DBA"

以 DBA 身份从 Interactive SQL 连接到示例数据库。

CONNECT
TO asademo
USER DBA
IDENTIFIED BY SQL

使用连接字符串从 Interactive SQL 连接到示例数据库。

CONNECT
USING 'UID=DBA;PWD=SQL;DBN=asademo'

连接到示例数据库后,数据库名称、用户 ID 以及服务器名称就出现在标题栏中:asademo (DBA) on asademo9。


Collection Contents 上一页 下一页 PDF