加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql实例dmysql自己封装的mysql库

发布时间:2020-12-12 01:29:57 所属栏目:MySql教程 来源:网络整理
导读:《Mysql实例dmysql自己封装的mysql库》要点: 本文介绍了Mysql实例dmysql自己封装的mysql库,希望对您有用。如果有疑问,可以联系我们。 怎么系统分类里面没有CGI啊? 最近好久没有发原创文章了,都在架构服务器,编写CGI程序 开头用了些天perl,后来发现对脚本

《Mysql实例dmysql自己封装的mysql库》要点:
本文介绍了Mysql实例dmysql自己封装的mysql库,希望对您有用。如果有疑问,可以联系我们。

怎么系统分类里面没有CGI啊?

最近好久没有发原创文章了,都在架构服务器,编写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$?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读