dmysql自己封装的mysql库

2016-02-19 12:05 7 1 收藏

下面请跟着图老师小编一起来了解下dmysql自己封装的mysql库,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - 编程语言 】

怎么系统分类里面没有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; ires-row; i++ )
    {
        for( j=0; jres-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$ 

来源:http://www.tulaoshi.com/n/20160219/1599751.html

延伸阅读
标签: ASP
  前段日子发表的文章,数据库的连接代码可以直接在ASP文件中显示出来。这次又进行了一次封装。 打开vb,新建Activex控件,工程名称为WebDb,类模块名称为GetInfomation 引用”Microsoft Activex Data Object 2.6 Library ” Private Conn As ADODB.Connection Private Rs As ADODB.Recordset ‘作用:判断数据库是否正确连结 '自...
提高MySQL 查询效率的三个技巧小结 MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我在开发一个P2P应用的时候曾经使用MySQL来保存P2P节点,由于P2P的应用中,结点数动辄上万个,而且节点变化频繁,因此一定要保持查询和插入的高效.以下是我在使用过程中做的提高效率的三个有效的尝试. l    ...
相信很多个人网站的站长,或者是独立Blog的博主,都有着备份数据库这样一个需求。当然WordPress这样插件非常丰富的Blog系统有好多能帮你完成这项任务的插件。如果您需要自己亲手来备份数据库的话,我贴一个Mysql自动备份脚本供大家参考,在国外网站上看到的,还是不错,实现了定期备份Mysql数据库,并且可以选在在每周的一天做指定目录下文件的...
原始的是Windows 2003下的32位的MySQL数据库, 新的服务器是Sun的64位的小型机,64位的MySQL数据库。 数据库文件很大,约有70G, 如果普通的迁移,需要在原始数据库导出数据,然后在新数据库导入数据 经仔细考虑,是否MySQL的数据库文件存储格式在不同的操作系统相同呢? 测试过程如下: 在64位SUN机器上安装64位版的MySQL 停止MySQL服...
相信很多个人网站的站长,或者是独立Blog的博主,都有着备份数据库这样一个需求。当然WordPress这样插件非常丰富的Blog系统有好多能帮你完成这项任务的插件。如果您需要自己亲手来备份数据库的话,我贴一个Mysql自动备份脚本供大家参考,在国外网站上看到的,还是不错,实现了定期备份Mysql数据库,并且可以选在在每周的一天做指定目录下文件的...

经验教程

670

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部