Mysql实例dmysql自己封装的mysql库
发布时间:2020-12-12 01:29:57 所属栏目:MySql教程 来源:网络整理
导读:《Mysql实例dmysql自己封装的mysql库》要点: 本文介绍了Mysql实例dmysql自己封装的mysql库,希望对您有用。如果有疑问,可以联系我们。 怎么系统分类里面没有CGI啊? 最近好久没有发原创文章了,都在架构服务器,编写CGI程序 开头用了些天perl,后来发现对脚本
《Mysql实例dmysql自己封装的mysql库》要点: 最近好久没有发原创文章了,都在架构服务器,编写CGI程序 开头用了些天perl,后来发现对脚本语言尤其是特别牛X的正则表达式有些看不懂... 回头用C语言写高效率的吧,反正我自己写过好些C的库了... 下面贴一个mysql的库,叫做dmysql 解压缩以后,make?;?make?install?安装 然后编译程序的时候,包含dmysql.h头文件,加上?-ldmysql标识,即可 头里面定义了一个mysql数据库的结构体, typedef?struct?_dmysql_info { ?????char?*host;?/*host?for?database*/ ?????char?*user;?/*user?name?for?database*/ ?????char?*pswd;?/*password?to?the?account*/ ?????char?*dbbs;?/*name?of?database*/ }?dmysql_info; 记录集的数据类型 typedef?struct?_dmysql_record { ?????char?*s_str; }?dmysql_record; typedef?struct?_dmysql_row { ?????dmysql_record?*s_record; }?dmysql_row; typedef?struct?_d_mysql_res { ?????int?row; ?????int?field; ?????dmysql_row?*s_row; }?dmysql_res; 还有程序运行时候的出错代码 #define?DMYSQL_QUERY_OKAY?0 #define?DMYSQL_SELECT_OKAY?0 #define?DMYSQL_CONNECT_ERROR?-1 #define?DMYSQL_INIT_ERROR?-2 #define?DMYSQL_QUERY_ERROR?-3 #define?DMYSQL_RES_ERROR?-4 程序一共就3个函数 extern?int?dmysql_query(?const?char?*?s_query,?const?dmysql_info?mysql_info?); 给出一句执行的SQL命令,比如UPDATE、INSERT,指定一个数据库,就可以了 extern?int?dmysql_select(?dmysql_res?**rel_res,?const?char?*s_select,?const?dmysql_info?mysql_info?); 传入一个数据库记录集的地址,给出一个SELECT记录的SQL命令,再制定一个数据库,就可以了 用来释放内存中在栈里面申明了的记录集空间 extern?void?dmysql_free(?dmysql_res?*res?); 下面是演示的程序代码: #include?<stdio.h> #include?<dmysql.h> int?main(?void?) { ????dmysql_info?db; ????db.host="127.0.0.1";?/*host?for?database*/ ????db.user="root";?/*user?name?for?database*/ ????db.pswd="";?/*password?to?the?account*/ ????db.dbbs="mysql";?/*name?of?database*/ ????char?*s_query="GRANT?ALL?ON?*.*?to?'dorainm'@'127.0.0.1'?IDENTIFIED?BY?'******';"; ????char?*s_sql="SELECT?`user`,`host`,`password`?FROM?`user`;"; ????int?i,?j; ????dmysql_res?*res; ????dmysql_query(?s_query,?db?); ????printf(?"select?out?:?%dn",?dmysql_select(?&res,?s_sql,?db?)?); ????for(?i=0;?i<res->row;?i++?) ????{ ????????for(?j=0;?j<res->field;?j++?) ????????{ ????????????printf("%st",?((res->s_row+i)->s_record+j)->s_str?); ????????} ????????printf(?"n"?); ????} ????dmysql_free(?res?); ????return?0; }; ? make?test后运行./dmysql dorainm@desktop:~/workroom/c/mylib/dmysql$?make?test?gcc?-Wall?-O3?-o?dmysql?main.c?-ldmysql?`mysql_config?--libs`?`mysql_config?--cflags`?dorainm@desktop:~/workroom/c/mylib/dmysql$?./dmysql select?out?:?5 root?localhost?%^$#!@%*&! root?desktop.dorainm.org?%^$#!@%*&!? ?desktop.dorainm.org?%^$#!@%*&!? ?localhost?%^$#!@%*&! dorainm?127.0.0.1?%^$#!@%*&!?dorainm@desktop:~/workroom/c/mylib/dmysql$? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |