广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    dmysql自己封装的mysql库

    2018-05-03 14:17:03 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布
    怎么系统分类里面没有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$ 

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告