收起左侧

    [其他教程] dmysql一段命令

    1
    回复
    1644
    查看
      [复制链接]

    管理员

    3550

    主题

    3599

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    16403

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2015-11-10 11:53:17 | 显示全部楼层 |阅读模式
    下面贴一个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  
    #include  
    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; irow; i++ )
        {
            for( j=0; jfield; 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$
    温馨提示:
    1、本站所有信息都来源于互联网有违法信息与本网站立场无关。
    2、当有关部门,发现本论坛有违规,违法内容时,可联系站长删除,否则本站不承担任何责任。
    3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
    4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    5、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    6、如果使用本帖附件,本站程序只提供学习使用,请24小时内删除!使用者搭建运营触犯法律,违法,违规,本站不承担任何责任。
    回复

    使用道具 举报

    cprjz 该用户已被删除
    发表于 2017-12-25 20:51:47 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在线客服
    热线电话

    微信扫一扫
    专注源码分享6年
    全国免费热线电话

    400-225-995

    周一至周日9:00-23:00

    反馈建议

    a5887776@163.com 在线QQ咨询

    Powered by Discuz! X3.4 Licensed © 2001-2013 Comsenz Inc.