dmysql自己封装的mysql库_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 : %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$ 

时间: 2024-10-15 07:16:32

dmysql自己封装的mysql库_Mysql的相关文章

session 加入mysql库的方法_Mysql

我们知道,session是一种会话技术,用来实现跨脚本共享数据或者检测跟踪用户状态. session的工作原理 (1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中. (2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量. (3)当执行PHP脚本时,通过使用session_register()函数注册session变量. (4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下

数据库-mysql没有默认的mysql库 进sql 也不用密码

问题描述 mysql没有默认的mysql库 进sql 也不用密码 我要创建一个表的名字 就出现ERROR 1044 (42000): Access denied for user ''@'localhost' to database ' 表名' 环境配置文件都配置好了 目录data下有mysql 但是show database 里面就没有 急死了 救助 解决方案 http://blog.chinaunix.net/uid-52437-id-2108893.html 解决方案二: 不太懂,我用了一

使用 RxJava 封装现有的库

本文讲的是使用 RxJava 封装现有的库, RxJava 是最近 Android 世界里十分流行的一个库,并且有着充分的流行的理由.虽然函数式响应编程的学习曲线十分陡峭,但学会之后的好处是相当巨大的. 我曾遇到的一个问题是我需要使用一个不支持 RxJava,而是使用了监听模式的库,因此无法享受Rx的很多在可组合性方面的便利. 我碰到这个实际问题是在集成 OpenIAB 至最新版本的 Fragment 时.更困难的是,OpenIAB 使用startActivityForResult来启动一个新的

xerces 开源库-vc6 封装的atl ocx 控件 可以封装 底层开源库吗?

问题描述 vc6 封装的atl ocx 控件 可以封装 底层开源库吗? 我封装了一个ocx插件,并形成了cab格式,然后进行了数字签名,js调用ok: 由于需要ocx解析xml格式的字符串,在ocx中调用了 xerces-c_2_7.dll 这个库文件,然后通过js调用的时候,ie就卡在了解析xml的接口里了: xerces-c_2_7.dll 这个库一起一直在服务器里进行正常调用,是完全正常的,我在inf文件里已经加入了 xerces-c_2_7.dll 的信息,如下:[Version] si

封装的静态库开放接口的类 必须是nsobject的类吗?

问题描述 封装的静态库开放接口的类 必须是nsobject的类吗? 如题,封装好的静态库,要开放的借口必须要放在nsobject类中吗? 比如说 我要在静态库中封装几个视图控制器,可以直接把视图的.h文件作为开放的接口吗? 急求~~坐等!! 解决方案 把开放的接口都统一放到一个h文件,统一管理

声明-linux下头文件和实现怎么封装进动态库

问题描述 linux下头文件和实现怎么封装进动态库 看了半天,发现函数声明和实现都封装进了动态库中,但是就想问了,怎么把 头文件和实现文件一起封装进动态库里面去的! 解决方案 我知道原因了!谢谢大家 解决方案二: 头文件一般是要提供的,这样别人调用你的so库时,没法知道如何传递参数等 解决方案三: 一般头文件是不封装进库的,只有实现才封装进去

C/S与B/S一些公共方法,如:操作word类可以封装成动态库吗

问题描述 C/S与B/S一些公共方法,如:操作word类可以封装成动态库吗 解决方案 解决方案二:应该可以,像操作数据库的类一样解决方案三:如果你是借助vba接口(也就是进程外启动一个word或者excel)操作的office文档,这种程序还是不太适合服务器端.解决方案四:可以啊..而且人家早就有封装完的啦比如myxls或者npoi什么的....aspose等等...解决方案五:引用3楼diaodiaop的回复: 可以啊..而且人家早就有封装完的啦比如myxls或者npoi什么的....aspo

在Linux系统安装Mysql教程_Mysql

引言 现在因为项目的需要在搭建Mysql的集群,从最简单的开始,先安装一个Mysql 在linux系统下. 步骤: 第一步:安装: tarmysql-5.5.48-linux2.-x86_64.tar.gz Copy到指定的路径下: cpmysql-5.5.48-linux2.6-x86_64 /usr/local/mysql -r 添加系统mysql组合mysql用户: 执行命令:groupaddmysql和useradd -r -g mysql mysql 安装数据库: 进入安装mysql软

图文详解Ubuntu下安装配置Mysql教程_Mysql

Ubuntu安装Mysq有l三种安装方式,下面就为大家一一讲解,具体内容如下 1. 从网上安装 sudo apt-get install mysql-server.装完已经自动配置好环境变量,可以直接使用mysql的命令. 注:建议将/etc/apt/source.list中的cn改成us,美国的服务器比中国的快很多. 2. 安装离线包,以mysql-5.0.45-linux-i686-icc-glibc23.tar.gz为例. 3. 二进制包安装:安装完成已经自动配置好环境变量,可以直接使用m