国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

dmysql自己封裝的mysql庫(kù)

2024-07-24 13:04:29
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
怎么系統(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$ 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中卫市| 宁化县| 吴旗县| 沭阳县| 潮州市| 桃园市| 泗水县| 新蔡县| 湘西| 南京市| 高淳县| 沂南县| 虹口区| 治县。| 祁东县| 台安县| 张北县| 浑源县| 陆良县| 富裕县| 小金县| 呼玛县| 云龙县| 邢台市| 大新县| 南汇区| 虹口区| 永定县| 七台河市| 巴东县| 祁东县| 张家口市| 河津市| 河源市| 武鸣县| 新巴尔虎右旗| 胶南市| 攀枝花市| 玉环县| 宜阳县| 澄江县|