29.2. 與資料庫伺服器連接

我們用下面的語句與一個資料庫連接:

EXEC SQL CONNECT TO 目標 [AS 連接名] [USER 用戶名];

目標 可以用下面的方法聲明:

如果您用文本聲明連接目標(也就說說,不是透過一個變量引用),而且您還不引用這個數值, 那麼使用普通 SQL 的大小寫無關的規則。這種情況下, 您也可以根據需要獨立地對參數使用雙引號包圍。實際上,可能用一個(單引號包圍)的字串文本或者變量引用作為連接目標可能更結實一些。 連接目標 DEFAULT 發起一個用預設用戶名對預設資料庫地連接。這個時候不應該聲明用戶名或連接名。

聲明用戶名的方法也有幾種不同方式:

和上面一樣, 用戶名指令 可以是一個 SQL 標識符,一個字元變量,或者一個字元串。

連接名 用於處理一個程序裡的多個連接。 如果一個程序只使用一個連接,則可以省略它。最近打開的連接成為目前連接, 在準備執行 SQL 語句的時候,預設時會使用這個連接(參閱本章稍後部分)。

這裡是一些 CONNECT 語句的例子:

EXEC SQL CONNECT TO mydb@sql.mydomain.com;

EXEC SQL CONNECT TO 'unix:postgresql://sql.mydomain.com/mydb' AS myconnection USER john;

EXEC SQL BEGIN DECLARE SECTION;
const char *target = "mydb@sql.mydomain.com";
const char *user = "john";
EXEC SQL END DECLARE SECTION;
 ...
EXEC SQL CONNECT TO :target USER :user;

最後的一個形式使用了上面說過的變量引用的方法。在後面的小節裡您會看到在 SQL 語句裡如何使用前綴了冒號的 C 變量。

請注意連接目標的格式沒有在 SQL 標準裡說明。所以,如果您想書寫可以移植的應用, 您可能會想使用類似上面的最後一個例子這樣的方法來把連接目標字串封裝在什麼地方。