close

 

找程式碼請入內~~

#include <stdio.h>
#include <mysql/mysql.h>
#include <unistd.h>

#define MyHOST "localhost"
#define MyNAME "zhouer"
#define MyDB   "zhouer"

#define QSIZE 256

MYSQL *dp;
MYSQL_RES *qp;
MYSQL_ROW row;

int opendb( char* passwd) {

        dp = mysql_init(NULL);
        if (dp == NULL) {
                fprintf(stderr, "mysql_init() failed\n");
                return 2;
        }

        mysql_real_connect(dp, MyHOST, MyNAME, passwd, MyDB, 0, NULL, 0);
        if (dp == NULL) {
                fprintf(stderr, "mysql_real_connect() failed\n");
                return 3;
        }

        if (mysql_select_db(dp, MyDB) != 0) {
                fprintf(stderr, "mysql_select_db() failed\n");
                mysql_close(dp);
                return 4;
        }
        return 0;
}

int main() {
        int i;
        int err, rows, cols;
        char query[QSIZE], passwd[128];

        strcpy(passwd, getpass("please input password for connecting mysql: "));

        err = opendb( passwd );
        if (err) {
                /* 如果資料庫沒開成功,沒戲唱了,輸出訊息 */
                return err;
        }

        while(1) {

                printf("input query: ");
                fgets(query, 128, stdin);

                if( !strcmp(query, "quit\n") ) {
                        printf("bye!");
                        break;
                }

                err = mysql_query(dp, query);
                if (err) {
                        /* 執行發生了錯誤,可能指令的語法有錯,也可能其他,輸出訊息 */
                        fprintf(stderr, "error in mysql_query\n");
                        return 5;
                }

                qp = mysql_store_result(dp);
                if (qp != NULL) {

                        /* 所有執行結果都已經儲存在 RAM 裡面,由 qp 指著,*/
                        /* 接下來,只要針對 *qp 做資料處理就行了。         */

                        rows = mysql_num_rows(qp);
                        cols = mysql_num_fields(qp);

                        /* printf("The result table has %d rows and %d columns\n", rows, cols); */

                        while ((row = mysql_fetch_row(qp)) != NULL) {
                                for (i = 0; i < cols; ++i) {
                                        printf("%s\t", row[i]);
                                }
                                putchar('\n');
                        }

                        mysql_free_result(qp);  /* 釋放儲存結果的記憶體 */
                }
        }

        mysql_close(dp);  /* 沒事早點切掉資料庫的連線,比較節省網路資源。*/

        return 0;
}

arrow
arrow
    全站熱搜

    NBPBlog 發表在 痞客邦 留言(3) 人氣()