| 设为首页 加入收藏 |
当前位置: |
| TOP | ||||
|
CAPI函数描述(O-R)(三)
对于某些参数,能够从选项文件获得取值,而不是取得mysql_real_connect()调用中的确切值。为此,在调用mysql_real_connect()之前,应与MYSQL_READ_DEFAULT_FILE或MYSQL_READ_DEFAULT_GROUP选项一起调用mysql_options()。随后,在mysql_real_connect()调用中,为准备从选项文件读取值的每个参数指定“无值”值: 对于host,指定NULL值或空字符串("")。 对于user,指定NULL值或空字符串。 对于passwd,指定NULL值。(对于密码,mysql_real_connect()调用中的空字符串的值不能被选项文件中的字符串覆盖,这是因为,空字符串明确指明MySQL账户必须有空密码)。 对于db,指定NULL值或空字符串 对于port,指定“0”值。 对于unix_socket,指定NULL值。 对于某一参数,如果在选项文件中未发现值,将使用它的默认值,如本节前面介绍的那样。 返回值 如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同。 错误 CR_CONN_HOST_ERROR 无法连接到MySQL服务器。 CR_CONNECTION_ERROR 无法连接到本地MySQL服务器。 CR_IPSOCK_ERROR 无法创建IP套接字。 CR_OUT_OF_MEMORY 内存溢出。 CR_SOCKET_CREATE_ERROR 无法创建Unix套接字。 CR_UNKNOWN_HOST 无法找到主机名的IP地址。 CR_VERSION_ERROR 协议不匹配,起因于:试图连接到具有特定客户端库(该客户端库使用了不同的协议版本)的服务器。如果使用很早的客户端库来建立与较新的服务器(未使用“--old-protocol”选项开始的)的连接,就会出现该情况。 CR_NAMEDPIPEOPEN_ERROR 无法在Windows平台下创建命名管道。 CR_NAMEDPIPEWAIT_ERROR 在Windows平台下等待命名管道失败。 CR_NAMEDPIPESETSTATE_ERROR 在Windows平台下获取管道处理程序失败。 CR_SERVER_LOST 如果connect_timeout > 0,而且在连接服务器时所用时间长于connect_timeout秒,或在执行init-command时服务器消失。 示例: MYSQL mysql; mysql_init(&mysql); mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name"); 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)); } 通过使用mysql_options(),MySQL库将读取my.cnf文件的[client]和[your_prog_name]部分,以确保程序工作,即使某人以某种非标准的方式设置MySQL也同样。 注意,一旦建立了连接,mysql_real_connect()将设置再连接标志(MYSQL结构的组成部份)的值,在低于5.0.3版的API中,将其设为“1”,在较新的版本中,将其设为“0”。对于该标志,值“1”表示,如果因连接丢失而无法执行语句,放弃前,将尝试再次连接到服务器。从MySQL 5.0.13开始,可以对mysql_options()使用MYSQL_OPT_RECONNECT选项,对再连接行为进行控制。 25.2.3.52. mysql_real_escape_string()unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length) 注意,mysql必须是有效的开放式连接。之所以需要它是因为,转义功能取决于服务器使用的字符集。 描述 该函数用于创建可在SQL语句中使用的合法SQL字符串。请参见9.1.1节,“字符串”。 按照连接的当前字符集,将“from”中的字符串编码为转义SQL字符串。将结果置于“to”中,并添加1个终结用NULL字节。编码的字符为NUL (ASCII 0)、‘\n’、‘\r’、‘\’、‘'’、‘"’、以及Control-Z(请参见9.1节,“文字值”)。(严格地讲,MySQL仅需要反斜杠和引号字符,用于引用转义查询中的字符串。该函数能引用其他字符,从而使得它们在日志文件中具有更好的可读性)。 “from”指向的字符串必须是长度字节“long”。必须为“to”缓冲区分配至少length*2+1字节。在最坏的情况下,每个字符或许需要使用2个字节进行编码,而且还需要终结Null字节。当mysql_real_escape_string()返回时,“to”的内容是由Null终结的字符串。返回值是编码字符串的长度,不包括终结用Null字符。 如果需要更改连接的字符集,应使用mysql_set_character_set()函数,而不是执行SET NAMES (或SET CHARACTER SET)语句。mysql_set_character_set()的工作方式类似于SET NAMES,但它还能影响mysql_real_escape_string()所使用的字符集,而SET NAMES则不能。 示例: char query[1000],*end; end = strmov(query,"INSERT INTO test_table values(");
*end++ = '\''; end += mysql_real_escape_string(&mysql, end,"What's this",11); *end++ = '\''; *end++ = ','; *end++ = '\''; end += mysql_real_escape_string(&mysql, end,"binary data: \0\r\n",16); *end++ = '\''; *end++ = ')'; if (mysql_real_query(&mysql,query,(unsigned int) (end - query))) {
fprintf(stderr, "Failed to insert row, Error: %s\n", mysql_error(&mysql)); } 该示例中使用的strmov()函数包含在mysqlclient库中,工作方式与strcpy()类似,但会返回指向第1个参数终结用Null的指针。 返回值 置于“to”中的值的长度,不包括终结用Null字符。 错误 无。 25.2.3.53. mysql_real_qu |
| 首页 上一页 1 2 3 4 下一页 尾页 3/4/4 | |
| 【大 中 小】【打印】 【繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部】 | |
|
分享到:
|
|
| 上一篇:veridata实验举例(1)验证TCUSTM.. | 下一篇:数据挖掘决策树算法ID3通俗演绎 |
| 评论 |
|
|