建站极客
数据库 Mysql 正文
dmysql自己封装的mysql库
所属分类:
数据库 / Mysql
阅读数:
741
收藏 0
赞 0
分享
怎么系统分类里面没有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 : %d\n", dmysql_select( &res, s_sql, db ) ); for( i=0; i<res->row; i++ ) { for( j=0; j<res->field; j++ ) { printf("%s\t", ((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$
简单了解标准SQL的update语句三种用法 这篇文章主要介绍了简单了解标准SQL的update语句三种用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
MySQL5.7.23解压版安装教程图文详解 这篇文章主要介绍了MySQL5.7.23解压版安装教程图文详解,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
基于python的mysql复制工具详解 python-mysql-replication 是基于python实现的 MySQL复制协议工具,我们可以用它来解析binlog 获取日志的insert,update,delete等事件 ,并基于此做其他业务需求。这篇文章主要介绍了基于python的mysql复制工具,需要的朋
评论 0
收藏 0
赞 0
分享
mysql语句查询用户权限过程详解 这篇文章主要介绍了mysql语句查询用户权限过程详解,授予用户的权限可能分全局层级权限、数据库层级权限、表层级别权限、列层级别权限、子程序层级权限。,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
MySQL创建数据表并建立主外键关系详解 这篇文章主要介绍了MySQL创建数据表并建立主外键关系详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
MySQL表中添加时间戳的几种方法 这篇文章主要介绍了MySQL表中添加时间戳的几种方法,有张表的数据需要用同步工具同步至其他库,需要 update_time 时间戳字段 来做增量同步,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
MySQL如何实现负载均衡功能 这篇文章主要介绍了MySQL如何实现负载均衡功能,学习过数据库的朋友们都会知道MySQL,那么如何在MySQL下实现负载均衡功能呢?本文就将为大家细致地介绍一下
评论 0
收藏 0
赞 0
分享
查看更多