此语句用于建立到数据库的连接。
CONNECT
[ TO engine-name ]
[ DATABASE database-name ]
[ AS connection-name ]
[ USER ] userid IDENTIFIED BY password
engine-name, database-name, connection-name, userid, password :
{ identifier | string | hostvar }
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 均有效。 |
无。
无。
SQL/92 语法 1 是完全的 SQL 特性。语法 2 是供应商扩展。
SQL/99 语法 1 是核心 SQL 外部的 SQL/基础特性。语法 2 是供应商扩展。
Sybase Open Client 嵌入式 SQL 支持另一种 CONNECT 语句语法。
以下是 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。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。