当前位置: 首页 > 图文教程 > 数据库 > MYSQL > dmysql自己封装的mysql库

MYSQL
PHP中操作MySQL的一些要注意的问题
数据恢复简介
SQL SERVER 2000 安装(症状归纳)
轻松应对JSP连接MySQL数据库问题
Mysql关于数据库和表的几个最基本命令
批量更改sql server数据库所有者的对象
VFP中用SPT访问SQL Server数据库
SQL Server如何访问sybase数据库的表
SQL Server Compact Edition 程序建立步骤
C# 怎样实现远程连接SQL Server2005
SQL数据库用户只有“名称”而无“登陆名”解决
SQL Server中取汉字拼音的函数
SQL扩展存储过程安装与卸载
实现jsp页面二级下拉框联动,实时读取数据库数据
Sql server 提示挂起问题
最详细的SQL注入相关的命令整理
简介影响mysqld安全的四个选项
精讲MySQL数据库的SQL语法参考
教你怎样在MySQL中提高全文搜索效率
将你的网站从MySQL改为Postgre SQL

MYSQL 中的 dmysql自己封装的mysql库


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 89 ::
收藏到网摘: n/a

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