dmysql自己封裝的mysql庫

來源:互聯網
上載者:User

怎麼系統分類裡面沒有CGI啊?

最近好久沒有發原創文章了,都在架構伺服器,編寫CGI程式
開頭用了些天perl,後來發現對指令碼語言尤其是特別牛X的Regex有些看不懂...
回頭用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$

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.