返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

30.2. 与数据库服务器连接

发布于 2019-09-30 03:08:15 字数 2243 浏览 999 评论 0 收藏 0

我们用下面的语句与一个数据库连接:

EXEC SQL CONNECT TO 目标 [AS 连接名] [USER 用户名];

目标 可以用下面的方法声明:

  • 数据库名[@主机名][:端口]

  • tcp:postgresql://主机名[:端口][/数据库名][?选项]

  • unix:postgresql://主机名[:端口][/数据库名][?选项]

  • 一个包含上面形式的 SQL 字串文本

  • 一个对包含上面的形式之一的字符串变量的引用

  • DEFAULT

如果你用文本声明连接目标(也就说说,不是通过一个变量引用),而且你还不引用这个数值, 那么使用普通 SQL 的大小写无关的规则。这种情况下, 你也可以根据需要独立地对参数使用双引号包围。实际上,可能用一个(单引号包围)的字串文本或者变量引用作为连接目标可能更结实一些。 连接目标 DEFAULT 发起一个用缺省用户名对缺省数据库地连接。这个时候不应该声明用户名或连接名。

声明用户名的方法也有几种不同方式:

  • 用户名

  • 用户名/口令

  • 用户名 IDENTIFIED BY 口令

  • 用户名 USING 口令

和上面一样,用户名口令可以是一个 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 标准里说明。所以,如果你想书写可以移植的应用, 你可能会想使用类似上面的最后一个例子这样的方法来把连接目标字串封装在什么地方。

<
PrevHomeNext
ecpg - 在 C 里嵌入 SQLUp关闭连接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文