30.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 標準裡說明。所以,如果你想 書寫可一直的應用,你可能會想使用類似上面的最後一個例子這樣 的方法來把連接目標字串封裝在什麼地方。