dmysql自己封裝的mysql庫(kù)
更新時(shí)間:2007年07月21日 00:00:00 作者:
怎么系統(tǒng)分類(lèi)里面沒(méi)有CGI???
最近好久沒(méi)有發(fā)原創(chuàng)文章了,都在架構(gòu)服務(wù)器,編寫(xiě)CGI程序
開(kāi)頭用了些天perl,后來(lái)發(fā)現(xiàn)對(duì)腳本語(yǔ)言尤其是特別牛X的正則表達(dá)式有些看不懂...
回頭用C語(yǔ)言寫(xiě)高效率的吧,反正我自己寫(xiě)過(guò)好些C的庫(kù)了...
下面貼一個(gè)mysql的庫(kù),叫做dmysql
解壓縮以后,make ; make install 安裝
然后編譯程序的時(shí)候,包含dmysql.h頭文件,加上 -ldmysql標(biāo)識(shí),即可
頭里面定義了一個(gè)mysql數(shù)據(jù)庫(kù)的結(jié)構(gòu)體,
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;
記錄集的數(shù)據(jù)類(lèi)型
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;
還有程序運(yùn)行時(shí)候的出錯(cuò)代碼
#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個(gè)函數(shù)
extern int dmysql_query( const char * s_query, const dmysql_info mysql_info );
給出一句執(zhí)行的SQL命令,比如UPDATE、INSERT,指定一個(gè)數(shù)據(jù)庫(kù),就可以了
extern int dmysql_select( dmysql_res **rel_res, const char *s_select, const dmysql_info mysql_info );
傳入一個(gè)數(shù)據(jù)庫(kù)記錄集的地址,給出一個(gè)SELECT記錄的SQL命令,再制定一個(gè)數(shù)據(jù)庫(kù),就可以了
用來(lái)釋放內(nèi)存中在棧里面申明了的記錄集空間
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后運(yùn)行./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$
最近好久沒(méi)有發(fā)原創(chuàng)文章了,都在架構(gòu)服務(wù)器,編寫(xiě)CGI程序
開(kāi)頭用了些天perl,后來(lái)發(fā)現(xiàn)對(duì)腳本語(yǔ)言尤其是特別牛X的正則表達(dá)式有些看不懂...
回頭用C語(yǔ)言寫(xiě)高效率的吧,反正我自己寫(xiě)過(guò)好些C的庫(kù)了...
下面貼一個(gè)mysql的庫(kù),叫做dmysql
解壓縮以后,make ; make install 安裝
然后編譯程序的時(shí)候,包含dmysql.h頭文件,加上 -ldmysql標(biāo)識(shí),即可
頭里面定義了一個(gè)mysql數(shù)據(jù)庫(kù)的結(jié)構(gòu)體,
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;
記錄集的數(shù)據(jù)類(lèi)型
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;
還有程序運(yùn)行時(shí)候的出錯(cuò)代碼
#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個(gè)函數(shù)
extern int dmysql_query( const char * s_query, const dmysql_info mysql_info );
給出一句執(zhí)行的SQL命令,比如UPDATE、INSERT,指定一個(gè)數(shù)據(jù)庫(kù),就可以了
extern int dmysql_select( dmysql_res **rel_res, const char *s_select, const dmysql_info mysql_info );
傳入一個(gè)數(shù)據(jù)庫(kù)記錄集的地址,給出一個(gè)SELECT記錄的SQL命令,再制定一個(gè)數(shù)據(jù)庫(kù),就可以了
用來(lái)釋放內(nèi)存中在棧里面申明了的記錄集空間
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后運(yùn)行./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$
您可能感興趣的文章:
- php封裝的mysqli類(lèi)完整實(shí)例
- php mysql 封裝類(lèi)實(shí)例代碼
- php封裝的連接Mysql類(lèi)及用法分析
- Python訪(fǎng)問(wèn)MySQL封裝的常用類(lèi)實(shí)例
- 一個(gè)ASP.NET的MYSQL的數(shù)據(jù)庫(kù)操作類(lèi)自己封裝的
- php實(shí)現(xiàn)mysql封裝類(lèi)示例
- .net連接Mysql封裝類(lèi)代碼 可直接調(diào)用
- php中mysql模塊部分功能的簡(jiǎn)單封裝
- PHP訪(fǎng)問(wèn)MYSQL數(shù)據(jù)庫(kù)封裝類(lèi)(附函數(shù)說(shuō)明)
- 詳解MySQL的簡(jiǎn)易封裝以及使用
相關(guān)文章
Mysql ERROR 1067: Invalid default v
這篇文章主要介紹了Mysql ERROR 1067: Invalid default value for字段問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05mysql 5.7 數(shù)據(jù)庫(kù)安裝步驟個(gè)人總結(jié)
這篇文章主要介紹了mysql 數(shù)據(jù)庫(kù)安裝步驟個(gè)人總結(jié),需要的朋友可以參考下2017-09-09MySQL中基本的用戶(hù)和權(quán)限管理方法小結(jié)
這篇文章主要介紹了MySQL中基本的用戶(hù)和權(quán)限管理方法小結(jié),是MySQL入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08mysql存儲(chǔ)過(guò)程之錯(cuò)誤處理實(shí)例詳解
這篇文章主要介紹了mysql存儲(chǔ)過(guò)程之錯(cuò)誤處理,結(jié)合實(shí)例形式詳細(xì)分析了mysql存儲(chǔ)過(guò)程錯(cuò)誤處理相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-12-12mysq啟動(dòng)失敗問(wèn)題及場(chǎng)景分析
這篇文章主要介紹了mysq啟動(dòng)失敗問(wèn)題及解決方法,通過(guò)問(wèn)題分析定位特殊場(chǎng)景解析給大家?guī)?lái)完美解決方案,需要的朋友可以參考下2021-07-07mysql5.7 新增的json字段類(lèi)型用法實(shí)例分析
這篇文章主要介紹了mysql5.7 新增的json字段類(lèi)型用法,結(jié)合實(shí)例形式分析了mysql5.7 新增的json字段類(lèi)型具體功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02MySQL函數(shù)CONCAT、CONCAT_WS、GROUP_CONCAT用法詳解
這篇文章主要介紹了MySQL函數(shù)CONCAT、CONCAT_WS、GROUP_CONCAT用法詳解,CONCAT 函數(shù)用于將兩個(gè)字符串連接為一個(gè)字符串,本文通過(guò)實(shí)例代碼詳細(xì)講解,需要的朋友可以參考下2023-02-02