找程式碼請入內~~
#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;
}
留言列表