dmysql自己封装的mysql库

xiuxiu1618

xiuxiu1618

2016-02-19 12:05

下面请跟着图老师小编一起来了解下dmysql自己封装的mysql库,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!
怎么系统分类里面没有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$ 

展开更多 50%)
分享

猜你喜欢

dmysql自己封装的mysql库

编程语言 网络编程
dmysql自己封装的mysql库

android控件封装 自己封装的dialog控件

编程语言 网络编程
android控件封装 自己封装的dialog控件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MYSQL的操作类(已封装)

MySQL mysql数据库
MYSQL的操作类(已封装)

自己动手封装的 ajax

Web开发
自己动手封装的 ajax

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

自己编写树(Tree)的封装类

编程语言 网络编程
自己编写树(Tree)的封装类

PHP中对数据库操作的封装

PHP
PHP中对数据库操作的封装

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何在Windows 8中对未分配的磁盘空间进行分区

如何在Windows 8中对未分配的磁盘空间进行分区

MySQL 索引分析和优化

MySQL 索引分析和优化
下拉加载更多内容 ↓