蛤蟆笔记MySQL学习C编写MySQL程序九预处理

上传人:鲁** 文档编号:562759821 上传时间:2023-01-03 格式:DOC 页数:11 大小:115.50KB
返回 下载 相关 举报
蛤蟆笔记MySQL学习C编写MySQL程序九预处理_第1页
第1页 / 共11页
蛤蟆笔记MySQL学习C编写MySQL程序九预处理_第2页
第2页 / 共11页
蛤蟆笔记MySQL学习C编写MySQL程序九预处理_第3页
第3页 / 共11页
蛤蟆笔记MySQL学习C编写MySQL程序九预处理_第4页
第4页 / 共11页
蛤蟆笔记MySQL学习C编写MySQL程序九预处理_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《蛤蟆笔记MySQL学习C编写MySQL程序九预处理》由会员分享,可在线阅读,更多相关《蛤蟆笔记MySQL学习C编写MySQL程序九预处理(11页珍藏版)》请在金锄头文库上搜索。

1、76蛤蟆笔记 MySQL学习一一C编写MySQL程序九预处理之前都是以字符串的形式发送和检索所有信息。也可以使用二进制的客户端/服务器协议。二进制协议支持服务器端预处理语句,并且可以按本地格式来传输数据值。并非所有的语句都能被预处理,使用如下几种语句:create table,delete,do,insert,replace,select,set,update 禾口绝大多数 show 变体。预处理基本流程如下:Mysql_stmt_init分配一个语句处理器,返回一个指向处理器的指针调用mysql_stms_prepare把语句发送到服务器,接受预处理,与语句处理器相关联如果包含占位符,在执行

2、之前,为每个占位符提供相应的数据调用 mysql_stmt_execute函数,执行该语句如果只修改不生产结果集,调用mysql_stmt_affected_rows来确定影响的行数如果有结果集,调用mysql_stmt_result_metadata来获得关于该结果集的元数据。调用mysql_stmt_bi nd_result 把这些结构绑 定到语句处理器上,然后反复调用 mysql_stmt_fetch,依次取回每一行。使用完语句处理之后,调用ysql_stmt_close来释放它。示例代码Prepared.c#i nclude #i nclude #in clude /* for str

3、dup() */#in clude #in clude #ifdef HAVE_OPENSSLenum opti on s_clie ntOPT_SSL_SSL=256,OPT_SSL_KEYOPT_SSL_CERT,OPT_SSL_CA,OPT_SSL_CAPATH,OPT_SSL_CIPHER,OPT_SSL_VERIFY_SERVER_CERT;1#en dif static char *opt_host_ name = NULL; /* server host (default=localhost) */static char (uchar *) & opt user name, NU

4、LL, NULL,GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0,#in clude NULL, 0, NULL, NULL, NULL, NULL, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 ;/* Print diagnostic message. If conn is non-NULL, print error informationopt_user_ name = NULL;/* user name (default=log in n ame) */static char *opt_password = NULL;/* p

5、assword (default=none) */static un sig ned int opt_port_ num = 0; /* port nu mber (use built-i n value) */static char *opt_socket_ name = NULL;/* socket n ame (use built-i n value) */static char *opt_db_ name = NULL;/* database n ame (default=none) */static un sig ned int opt_flags = 0;/* connection

6、 flags (none) */#i nclude static int ask_password = 0;/* whether to solicit password */static MYSQL *conn;/* poin ter to conn ecti on han dler */static const char *client_groups = client, NULL ;static struct my_opti on my_opts =/* opti on in formati on structures */help, ?, Display this help and exi

7、t,NULL, NULL, NULL,GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0,host, h, Host to connect to,(uchar * retur ned by server.) & opt_host_ name, NULL, NULL,GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0,password, p, Password,(uchar *) & opt_password, NULL, NULL,GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0,port, P, Port number,(

8、uchar *) & opt_p ort_n um, NULL, NULL,GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0,socket, S, Socket path,(uchar *) & opt_socket_ name, NULL, NULL,GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0,user, u, User name,*/static voidprin t error(MYSQL *conn, char *message)fprintf (stderr, %sn, message);if (conn != NU

9、LL)fprintf (stderr, Error %u (%s): %sn,mysql_err no (conn), mysql_sqlstate (conn), mysql_error (conn);/* Like prin t_error(), but use stateme nt han dler rather tha n* conn ecti on han dler to access error in formati on.*/* # _PRINT_STMT_ERROR_ */static voidprin t_stmt_error (MYSQL_STMT *stmt, char

10、*message)fprintf (stderr, %sn, message);if (stmt != NULL)fprintf (stderr, Error %u (%s): %sn,mysql_stmt_err no (stmt), mysql_stmt_sqlstate (stmt), mysql_stmt_error (stmt);/* # _PRINT_STMT_ERROR_ */static my_boolget_ on e_opti on (int optid, const struct my_opti on *opt, char *argume nt)switch (optid

11、)case ?:my_pri nt_help (my_opts);exit (0);/* print help message */case p:/* password */if (!argume nt)/* no value give n; solicit it later */ask_password = 1;else/* copy password, overwrite origi nal */ opt_password = strdup (argume nt); if (opt password = NULL)prin t error (NULL, could not allocate

12、 password buffer); exit (1); while (*argume nt) *argume nt+ = x;ask password = 0; break;#in clude return (0); #in clude process prepared stateme nt.c intmain (int argc, char *argv)int opt_err;MY_INIT (argv0);load defaults (my,clie nt groups, &argc, &argv);if (opt err = han dle opti ons (&argc, &argv

13、, my opts, get on e optio n) exit (opt_err);/* get database n ame if prese nt on comma nd line */ if (argc 0)opt db name = argv0;-argc; +argv;/* initialize client library */if (mysql_library_i nit (0, NULL, NULL)prin t_error (NULL, mysql_library_i nit() failed);exit (1);/* in itialize connection han

14、 dler */conn = mysql _in it (NULL);if (conn = NULL)prin t_error (NULL, mysql_ in it() failed (probably out of memory); exit (1);#ifdef HAVE_OPENSSL/* pass SSL information to client library */if (opt_use_ssl)mysql_ssl_set (c onn, opt_ssl_key, opt_ssl_cert, opt_ssl_ca, opt_ssl_capath, opt_ssl_cipher);mysql_optio ns (co nn ,MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (char* )& opt_ssl_verify_server_cert);#en dif/* connect to server */if (mysql real c onn ect (c onn, opt host name, opt user name, opt password,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号