mysql封装_dmysql自己封装的mysql库

dmysql自己封装的mysql库

更新时间:2007年07月21日 00:00:00   作者:

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

#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$

相关文章

1a1b05c64693fbf380aa1344a7812747.png

建立MYSQL索引时需要注意以下几点:建立索引的时机/对于like/对于有多个条件的/开启索引缓存/建立索引是有代价的等等,感兴趣的你可以参考下本文,或许可以帮助到你2013-03-03

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章主要介绍了CentOS Mysql数据库如何实现定时备份,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-06-06

0ea3c7666119d5615e582f823fb3fad6.png

my.ini是MySQL数据库中使用的配置文件,修改这个文件可以达到更新配置的目的。这篇文章主要介绍了MySQL5.7缺少my.ini文件的解决方法,需要的朋友可以参考下2018-03-03

4f96a78db829b1556ff16de21e013c7a.png

前几天发现由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,只能想办法转移数据的目录。网上有很多相关的文章写到转移数据库目录的文章,但转载的过程中还会有一些错误,因为大部分人根本就没测试过,这篇文章是本文测试过整理好后分享给大家。2016-11-11

8cc1031babc6aff2319f1c6af8544aa0.png

这篇文章主要介绍了LInux下安装MySQL5.6 X64版本步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04

0c932a99bb7b6f23c937db507070cc7b.png

这篇文章主要介绍了mysql索引基数概念与用法,结合实例形式分析了mysql索引基数的相关概念、原理、操作命令及相关使用技巧,需要的朋友可以参考下2019-03-03

cca732bf65a93ed2ec0ac80c638460fe.png

这篇文章主要介绍了MySQL 实现树的遍历详解及简单实现示例的相关资料,这里提供了示例代码及测试结果,需要的朋友可以参考下2017-01-01

2d9f31f2af7b675a3d153d2b7f1035a7.png

运算符包括四类,分别是:算数运算符、比较运算符、逻辑运算符和位运算符2013-05-05

b452cee8ec5cd9e58ab98eba17281e59.png

这篇文章主要给大家介绍了Workbench通过远程访问mysql数据库的相关资料,文中通过图文介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。2017-06-06

f4838ec7e2d4da28e0b57d4e852dadd4.png

MySQL 几乎模拟了 Oracle,SQL Server等商业数据库的大部分功能,函数。但很可惜,到目前的版本(5.1.33)为止,仍没有实现ROWNUM这个功能2011-10-10

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值