服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|

服务器之家 - 数据库 - Mysql - dmysql自己封装的mysql库

dmysql自己封装的mysql库

2019-10-18 16:16mysql技术网 Mysql

怎么系统分类里面没有CGI啊? 最近好久没有发原创文章了,都在架构服务器,编写CGI程序 开头用了些天perl,后来发现对脚本语言尤其是特别牛X的正则表达式有些看不懂... 回头用C语言写高效率的吧,反正我自己写过好些C的库了

怎么系统分类里面没有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$ 

延伸 · 阅读

精彩推荐
  • MysqlCMD命令操作MySql数据库的方法详解

    CMD命令操作MySql数据库的方法详解

    今天小编就为大家分享一篇关于CMD命令操作MySql数据库的方法详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    炫酷飞扬2932019-06-03
  • MysqlMySQL组合索引与最左匹配原则详解

    MySQL组合索引与最左匹配原则详解

    这篇文章主要给大家介绍了关于MySQL组合索引与最左匹配原则的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mysql具有一定的参考学习...

    Wolf、Heart1412019-06-01
  • Mysql详解Mysql导出数据的几种方式

    详解Mysql导出数据的几种方式

    MySQL导出数据的目的有很多种,如数据库备份、表结构导出、表数据导出、分析数据采取等,本文详细的介绍了两种Mysql导出数据的方法,感兴趣的小伙伴可...

    layveen3082019-06-19
  • Mysqlmysql 8.0.13手动安装教程

    mysql 8.0.13手动安装教程

    这篇文章主要为大家详细介绍了mysql 8.0.13手动安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    石头猿4062019-06-06
  • Mysql使用JDBC连接Mysql数据库会出现的问题总结

    使用JDBC连接Mysql数据库会出现的问题总结

    这篇文章主要给大家介绍了关于使用JDBC连接Mysql数据库会出现的问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    Dmego4032019-06-21
  • MysqlMySQL在线DDL gh-ost使用总结

    MySQL在线DDL gh-ost使用总结

    在本篇内容里小编给大家整理了关于MySQL在线DDL gh-ost使用方法和相关知识点,需要的朋友们学习下。...

    jyzhou4132019-06-05
  • Mysqlmysql实现sequence功能的代码

    mysql实现sequence功能的代码

    今天小编就为大家分享一篇关于mysql实现sequence功能的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看...

    江上一叶舟4272019-06-02
  • MysqlSQL和NoSQL之间的区别总结

    SQL和NoSQL之间的区别总结

    在本篇内容里我们给大家精选了关于SQL和NoSQL之间的区别的总结内容,对此有需要的朋友们跟着学习下。...

    laozhang3462019-06-07