要从连接器/C++ 应用程序连接到 MySQL 服务器,请使用该类的
connect()
方法
MySQL_Driver
。该
connect()
方法有两个调用序列:
-
一个调用序列采用指示如何连接到 MySQL 服务器的参数,以及要使用的 MySQL 帐户的用户名和密码:
sql::Connection * MySQL_Driver::connect(const sql::SQLString& hostName, const sql::SQLString& userName, const sql::SQLString& password)
例子:
sql::mysql::MySQL_Driver *driver; sql::Connection *con; driver = sql::mysql::MySQL_Driver::get_mysql_driver_instance(); con = driver->connect("tcp://127.0.0.1:3306", "root", "rootpass");
这种语法对于简单的连接很方便。
-
另一种语法采用选项映射,其中包含用于建立连接的连接属性:
sql::Connection * MySQL_Driver::connect(sql::ConnectOptionsMap & properties)
此语法对于需要指定第一个语法允许的三个选项以外的选项的连接很有用。要使用选项映射,请使用所需的连接属性对其进行初始化,然后将映射传递给
connect()
调用。例子:
sql::mysql::MySQL_Driver *driver; sql::Connection *con; sql::ConnectOptionsMap connection_properties; connection_properties["hostName"] = hostName; connection_properties["userName"] = userName; connection_properties["password"] = password; connection_properties["schema"] = "information_schema"; connection_properties["port"] = 13306; connection_properties["OPT_RECONNECT"] = true; driver = sql::mysql::MySQL_Driver::get_mysql_driver_instance(); con = driver->connect(connection_properties);
该hostName
参数可以是主机名、IP 地址或 URL。
对于hostName
指定为 URL 的值,格式以传输协议开头,协议确定 URL 其余部分的语法:
-
tcp://...
此 URL 格式建立 TCP/IP 连接,可用于所有平台。该格式允许指定主机名或 IP 地址、TCP/IP 端口号和默认数据库。包含所有这些项目的 URL 的语法如下所示:
tcp://host:port/db
URL的和 部分是可选的。该部分可以包含在和 字符中,这对于指定 IPv6 地址非常有用,例如包含字符的 字符,否则将被解释为开始 说明符。
:
port
/
db
host
[
]
::1
:
:
port
此 URL 使用默认端口号连接到本地主机,而不选择默认数据库:
tcp://127.0.0.1
此 URL 连接到端口 13306 上的指定主机并选择
employees
作为默认数据库:tcp://host1.example.com:13306/employees
::1
此 URL 使用IPv6 地址 连接到本地主机上的端口 3307 。URL 在地址周围使用[
and来消除URL 的主机和端口部分中的字符的歧义:]
:
tcp://[::1]:3307
-
pipe://
pipe_name
此 URL 格式允许使用命名管道连接到 Windows 系统上的本地主机。该
pipe_name
值是命名管道名称,就像在 Windows 上运行的 mysql和 mysqladmin--socket
等 MySQL 客户端的选项一样(请参阅使用命令选项连接到 MySQL 服务器)。 -
unix://
path_name
此 URL 格式允许使用 Unix 域套接字文件连接到 Unix 和类 Unix 系统上的本地主机。该
path_name
值是套接字文件路径名,就像 在 Unix 上运行的 mysql和 mysqladmin--socket
等 MySQL 客户端的选项一样(请参阅使用命令选项连接到 MySQL 服务器)。
对于connect()
采用选项映射参数的语法,Connector/C++ 支持下表中描述的连接属性。
其中许多属性对应于
mysql_options()
、
mysql_options4()
或
mysql_real_connect()
, C API 函数的参数。对于此类属性,此处的描述很简短。有关详细信息,请参阅这些功能的说明。参见mysql_options()、
mysql_options4()和
mysql_real_connect()。
-
characterSetResults
此选项设置
character_set_results
会话的系统变量。该值是一个字符串。 -
charsetDir
包含字符集定义文件的目录的路径名。此选项对应于 C API 函数的
MYSQL_SET_CHARSET_DIR
选项 。mysql_options()
该值是一个字符串。此选项是在 Connector/C++ 1.1.5 中添加的。
-
CLIENT_COMPRESS
是否在客户端/服务器协议中使用压缩。此选项对应于C API 函数
client_flag
参数的 同名标志 。mysql_real_connect()
该值是一个布尔值。 -
CLIENT_FOUND_ROWS
是否返回找到(匹配)的行数,而不是更改的行数。此选项对应于C API 函数
client_flag
参数的同名标志。mysql_real_connect()
该值是一个布尔值。 -
CLIENT_IGNORE_SIGPIPE
是否阻止
libmysqlclient
客户端库安装SIGPIPE
信号处理程序。此选项对应于C API 函数client_flag
参数的 同名标志。mysql_real_connect()
该值是一个布尔值。 -
CLIENT_IGNORE_SPACE
函数名后是否允许有空格。此选项对应于C API 函数
client_flag
参数的 同名标志 。mysql_real_connect()
该值是一个布尔值。 -
CLIENT_INTERACTIVE
在关闭连接之前 是否允许
interactive_timeout
几秒钟的不活动(而不是 几秒钟)。此选项对应于C API 函数参数的wait_timeout
同名标志。该值是一个布尔值。client_flag
mysql_real_connect()
-
CLIENT_LOCAL_FILES
是否启用
LOAD DATA LOCAL INFILE
处理。此选项对应于C API 函数client_flag
参数的同名标志。mysql_real_connect()
该值是一个布尔值。 -
CLIENT_MULTI_STATEMENTS
客户端是否可以在单个字符串中发送多个语句(由
;
字符分隔)。此选项对应于C API 函数client_flag
参数的 同名标志 。mysql_real_connect()
该值是一个布尔值。笔记没有
CLIENT_MULTI_RESULTS
连接选项。Connector/C++ 为所有连接启用该标志。 -
CLIENT_NO_SCHEMA
是否禁止
db_name.tbl_name.col_name
语法。此选项对应于C API 函数client_flag
参数的 同名标志 。mysql_real_connect()
该值是一个布尔值。 -
defaultAuth
要使用的身份验证插件的名称。此选项对应于C API 函数的
MYSQL_DEFAULT_AUTH
选项。mysql_options()
该值是一个字符串。此选项是在 Connector/C++ 1.1.5 中添加的。
-
defaultPreparedStatementResultType
执行语句的结果集类型,用于
MySQL_Connection::prepareStatement()
定义结果集是否可滚动。允许的值为sql::ResultSet::TYPE_FORWARD_ONLY
和sql::ResultSet::TYPE_SCROLL_INSENSITIVE
。sql::ResultSet::TYPE_SCROLL_SENSITIVE
不支持 该 类型。 -
defaultStatementResultType
执行语句的结果集类型,用于
MySQL_Connection::createStatement()
定义结果集是否可滚动。允许的值为sql::ResultSet::TYPE_FORWARD_ONLY
和sql::ResultSet::TYPE_SCROLL_INSENSITIVE
。sql::ResultSet::TYPE_SCROLL_SENSITIVE
不支持 该 类型。 -
hostName
这与三参数语法具有相同的含义和
connect()
语法。如本节前面所述,该值可以是主机名、IP 地址或 URL。 -
OPT_CAN_HANDLE_EXPIRED_PASSWORDS
客户端是否可以处理过期密码。此选项对应于 C API 函数的
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
选项。mysql_options()
该值是一个布尔值。有关用法示例,请参阅 第 6.7 节 “连接到密码已过期的帐户”。
此选项是在 Connector/C++ 1.1.2 中添加的。
-
OPT_CHARSET_NAME
用作默认字符集的字符集的名称。此选项对应于 C API 函数的
MYSQL_SET_CHARSET_NAME
选项 。mysql_options()
该值是一个字符串。 -
OPT_CONNECT_ATTR_ADD
要添加到当前连接属性集以在连接时传递给服务器的键值对。此选项对应于 C API 函数的
MYSQL_OPT_CONNECT_ATTR_ADD
选项。mysql_options4()
该值是一个std::map< sql::SQLString, sql::SQLString >
值。此选项是在 Connector/C++ 1.1.4 中添加的。
-
OPT_CONNECT_ATTR_DELETE
要从当前连接属性集中删除的键值对的键名,以在连接时传递给服务器。此选项对应于 C API 函数的
MYSQL_OPT_CONNECT_ATTR_DELETE
选项 。mysql_options()
该值是一个std::list< sql::SQLString >
值。此选项是在 Connector/C++ 1.1.5 中添加的。
-
OPT_CONNECT_ATTR_RESET
重置(清除)当前连接属性集以在连接时传递给服务器。此选项对应于 C API 函数 的
MYSQL_OPT_CONNECT_ATTR_RESET
选项 。mysql_options()
此选项是在 Connector/C++ 1.1.5 中添加的。
-
OPT_CONNECT_TIMEOUT
以秒为单位的连接超时。此选项对应于 C API 函数的
MYSQL_OPT_CONNECT_TIMEOUT
选项 。mysql_options()
该值是一个无符号整数。 -
OPT_ENABLE_CLEARTEXT_PLUGIN
启用
mysql_clear_password
明文身份验证插件。此选项对应于 C API 函数的MYSQL_ENABLE_CLEARTEXT_PLUGIN
选项 。mysql_options()
该值是一个布尔值。此选项是在 Connector/C++ 1.1.3 中添加的。
-
OPT_GET_SERVER_PUBLIC_KEY
对于使用旧协议(即,不是使用 X DevAPI 或 X DevAPI for C)、Connector/C++ 建立的与服务器的连接,从服务器请求 RSA 公钥。对于使用
caching_sha2_password
或sha256_password
身份验证插件的帐户,此密钥可在禁用 TLS 的情况下用于基于 RSA 密钥对的密码交换的连接过程中使用。此选项对应于 C API 函数的MYSQL_OPT_GET_SERVER_PUBLIC_KEY
选项。mysql_options()
该值是一个布尔值。此功能需要 MySQL 8.0 GA 服务器,并且仅支持使用 OpenSSL 构建的连接器/C++。
此选项是在 Connector/C++ 1.1.11 中添加的。
-
OPT_LOCAL_INFILE
是否启用
LOAD DATA LOCAL INFILE
语句。此选项对应于 C API 函数的MYSQL_OPT_LOCAL_INFILE
选项 。mysql_options()
该值是一个无符号整数。此选项是在 Connector/C++ 1.1.5 中添加的。
-
OPT_NAMED_PIPE
如果服务器允许命名管道连接,则使用命名管道连接到 Windows 上的 MySQL 服务器。此选项对应于C API 函数的
MYSQL_OPT_NAMED_PIPE
选项。mysql_options()
该值未使用。 -
OPT_READ_TIMEOUT
每次尝试从服务器读取的超时时间(以秒为单位)。此选项对应于 C API 函数的
MYSQL_OPT_READ_TIMEOUT
选项 。mysql_options()
该值是一个无符号整数。 -
OPT_RECONNECT
如果发现连接丢失,启用或禁用自动重新连接到服务器。此选项对应于C API 函数的
MYSQL_OPT_RECONNECT
选项 。mysql_options()
该值是一个布尔值。默认为假。 -
OPT_REPORT_DATA_TRUNCATION
error
使用结构成员 为准备好的语句启用或禁用数据截断错误报告MYSQL_BIND
。此选项对应于 C API 函数的MYSQL_REPORT_DATA_TRUNCATION
选项 。mysql_options()
该值是一个布尔值。 -
OPT_TLS_VERSION
指定加密连接允许的协议。选项值是包含一个或多个协议名称的逗号分隔列表的字符串。例子:
connection_properties["OPT_TLS_VERSION"] = sql::SQLString("TLSv1.1,TLSv1.2");
允许的值取决于用于编译 MySQL 的 SSL 库:
TLSv1
,TLSv1.1
,TLSv1.2
如果使用 OpenSSL;TLSv1
以及TLSv1.1
是否使用了 yaSSL。默认是允许所有可用的协议。有关 MySQL 中加密协议的更多信息,请参阅 加密连接 TLS 协议和密码。
此选项是在 Connector/C++ 1.1.8 中添加的。
-
OPT_WRITE_TIMEOUT
每次尝试写入服务器的超时秒数。此选项对应于 C API 函数的
MYSQL_OPT_WRITE_TIMEOUT
选项 。mysql_options()
该值是一个无符号整数。 -
password
客户端 MySQL 帐户的密码。此选项对应于C API 函数的
passwd
参数 。mysql_real_connect()
该值是一个字符串。 -
pipe
Windows 系统上到本地主机的命名管道连接的命名管道的名称。该值是一个字符串。
-
pluginDir
在其中查找客户端插件的目录。此选项对应于C API 函数的
MYSQL_PLUGIN_DIR
选项。mysql_options()
该值是一个字符串。此选项是在 Connector/C++ 1.1.5 中添加的。
-
port
TCP/IP 连接的端口号。此选项对应于C API 函数的
port
参数 。mysql_real_connect()
该值是一个无符号整数。 -
postInit
此选项类似于
preInit
,但语句在驱动程序初始化后执行。该值是一个字符串。此选项是在 Connector/C++ 1.1.2 中添加的。
-
preInit
包含要在驱动程序初始化之前执行的语句的字符串。此选项对应于 C API 函数的
MYSQL_INIT_COMMAND
选项 。mysql_options()
该值是一个字符串。有关显示使用此选项重置过期密码的示例,请参阅 第 6.7 节,“连接到具有过期密码的帐户”。
此选项是在 Connector/C++ 1.1.2 中添加的。
-
readDefaultFile
从命名的选项文件而不是从
my.cnf
. 此选项对应于 C API 函数的MYSQL_READ_DEFAULT_FILE
选项 。mysql_options()
该值是一个字符串。此选项是在 Connector/C++ 1.1.5 中添加的。
-
readDefaultGroup
从指定的组
my.cnf
或指定的文件中 读取选项readDefaultFile
。此选项对应于C API 函数的MYSQL_READ_DEFAULT_GROUP
选项 。mysql_options()
该值是一个字符串。此选项是在 Connector/C++ 1.1.5 中添加的。
-
rsaKey
包含服务器 RSA 公钥的文件的路径名。此选项对应于 C API 函数的
MYSQL_SERVER_PUBLIC_KEY
选项 。mysql_options()
该值是一个字符串。 -
schema
默认数据库名称。此选项对应于 C API 函数的
db
参数 。mysql_real_connect()
该值是一个字符串。 -
socket
Unix 域套接字文件的名称,用于到 Unix 和类 Unix 系统上的本地主机的套接字文件连接。此选项对应于C API 函数的
socket
参数。mysql_real_connect()
该值是一个字符串。 -
sslCA
包含可信 SSL CA 列表的 PEM 格式文件的路径。此选项对应于 C API 函数的
MYSQL_OPT_SSL_CA
选项 。mysql_options()
该值是一个字符串。 -
sslCAPath
包含 PEM 格式的可信 SSL CA 证书的目录的路径。此选项对应于 C API 函数的
MYSQL_OPT_SSL_CAPATH
选项 。mysql_options()
该值是一个字符串。 -
sslCert
用于建立安全连接的 PEM 格式的 SSL 证书文件的名称。此选项对应于 C API 函数的
MYSQL_OPT_SSL_CERT
选项 。mysql_options()
该值是一个字符串。 -
sslCipher
SSL 加密的允许密码列表。此选项对应于C API 函数的
MYSQL_OPT_SSL_CIPHER
选项。mysql_options()
该值是一个字符串。 -
sslCRL
包含 PEM 格式的证书吊销列表的文件的路径。此选项对应于 C API 函数的
MYSQL_OPT_SSL_CRL
选项 。mysql_options()
该值是一个字符串。此选项是在 Connector/C++ 1.1.4 中添加的。
-
sslCRLPath
包含 PEM 格式的证书吊销列表的文件所在目录的路径。此选项对应于C API 函数的
MYSQL_OPT_SSL_CRLPATH
选项。mysql_options()
该值是一个字符串。此选项是在 Connector/C++ 1.1.4 中添加的。
-
sslEnforce
是否要求连接使用 SSL。此选项对应于C API 函数的
MYSQL_OPT_SSL_ENFORCE
选项。mysql_options()
该值是一个布尔值。 -
sslKey
用于建立安全连接的 PEM 格式的 SSL 密钥文件的名称。此选项对应于 C API 函数的
MYSQL_OPT_SSL_KEY
选项 。mysql_options()
该值是一个字符串。 -
sslVerify
启用或禁用根据连接到服务器时使用的主机名验证其证书中服务器的公用名值。此选项对应于 C API 函数的
MYSQL_OPT_SSL_VERIFY_SERVER_CERT
选项。mysql_options()
该值是一个布尔值。此选项是在 Connector/C++ 1.1.4 中添加的。
-
useLegacyAuth
是否允许连接到不支持 MySQL 4.1.1 及更高版本中使用的密码散列的服务器。该选项对应于C API函数的
MYSQL_SECURE_AUTH
选项mysql_options()
,只是意义与useLegacyAuth
逻辑相反MYSQL_SECURE_AUTH
。例如,要禁用安全身份验证,请传递useLegacyAuth
true 值。该值是一个布尔值。此选项是在 Connector/C++ 1.1.4 中添加的。
-
userName
要使用的 MySQL 帐户的用户名。此选项对应于C API 函数的
user
参数 。mysql_real_connect()
该值是一个字符串。