int
mysql_options4(MYSQL *mysql,
enum mysql_option option,
const void *arg1,
const void *arg2)
mysql_options4()
与 mysql_options()
类似,但它多了一个第四个参数,因此可以为第二个参数中指定的选项传递两个值。
以下列表描述了允许的选项、它们的效果以及如何使用 arg1
和 arg2
。
-
MYSQL_OPT_CONNECT_ATTR_ADD
(参数类型:char *, char *
)此选项将一个属性键值对添加到当前连接属性集中,以便在连接时传递给服务器。两个参数都是指向以 null 结尾的字符串的指针。第一个和第二个字符串分别表示键和值。如果键为空或在当前连接属性集中已存在,则会发生错误。键名称与现有键的比较区分大小写。
以下划线 (
_
) 开头的键名称保留供内部使用,应用程序程序不应创建这些键名称。此约定允许 MySQL 引入新的属性,而不会与应用程序属性冲突。mysql_options4()
对它接受的连接属性数据总大小施加了 64KB 的限制。对于导致此限制被超过的调用,会发生CR_INVALID_PARAMETER_NO
错误。属性大小限制检查也会在服务器端进行。有关详细信息,请参阅 性能模式连接属性表,其中还描述了性能模式如何通过session_connect_attrs
和session_account_connect_attrs
表公开连接属性。另请参阅
mysql_options()
函数描述中对MYSQL_OPT_CONNECT_ATTR_RESET
和MYSQL_OPT_CONNECT_ATTR_DELETE
选项的描述。 -
MYSQL_OPT_USER_PASSWORD
(参数类型:unsigned int *, char *
)此选项指定多因素身份验证因素的密码(请参阅 多因素身份验证)。
第一个参数指向一个
unsigned int
变量,该变量应该具有值 1、2 或 3,以指示正在为其指定密码的因素。第二个参数指向一个提供密码值的字符字符串。此选项是在 MySQL 8.0.27 中添加的。
-
指定了重复的属性名称。
-
键名称为空或键值连接属性数据量超过 64KB 限制。
-
内存不足。
此示例演示了指定连接属性的调用
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_OPT_CONNECT_ATTR_RESET, 0);
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key1", "value1");
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key2", "value2");
mysql_options4(&mysql,MYSQL_OPT_CONNECT_ATTR_ADD, "key3", "value3");
mysql_options(&mysql,MYSQL_OPT_CONNECT_ATTR_DELETE, "key1");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}