- 论坛徽章:
- 0
|
各位好,
小弟初初學用c編mysql程序, 有以下問題出現.
先介紹我的資庫, password 我就不貼出來, 是用 PASSWORD('xxx') 做出來的.
- info
- +-------+--------+---------------+
- | name | id | password |
- +-------+--------+---------------+
- | CKW | 001 | .................. |
- +-------+--------+---------------+
- | MJLU | KK91 | .................. |
- +-------+--------+---------------+
复制代码
以下介紹我的程序, 省缺錯誤顯示以方便顯示問題所在:
- #include <stdio.h>
- #include <stdlib.h>
- #include <mysql/mysql.h>
- #define MYSQL_HOST "localhost"
- #define MYSQL_USER "tester"
- #define MYSQL_PASS "123"
- #define MYSQL_DB "test_db"
- MYSQL *mysql;
- MYSQL_RES *ret;
- MYSQL_ROW row;
- int main(void)
- {
- char sql[100] = "select name, id from info";
- int num_field;
- mysql = mysql_init(NULL);
- if(mysql == NULL)
- /*** error ***/
- if(mysql_real_connect(mysql, MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DB, 0, NULL, 0) == NULL)
- {
- /*** error ***/
- }
-
- if(mysql_query(mysql, sql) != 0)
- {
- fprintf(stderr, "Error on select query!\n");
- exit(1);
- }
-
- if(!(ret = mysql_store_result(mysql)))
- fprintf(stderr, "Error store result!\n");
- num_field = mysql_num_fields(ret);
- row = mysql_fetch_row(ret);
- for(i=0; i<num_field; i++)
- fprintf(stdout, "==>%s<==\n", row[i]);
- mysql_free_result(ret);
- mysql_close(mysql);
- return 0;
- }
复制代码
以上程序是可以顯示的無誤的, 但若果我把sql改成select sf_name, sf_id from staff_info where id='001'時, 就會出現Segmentation fault.
我的原意是要把 select 後的 CKW 顯示出來作以後之用. 請各位指教.
thanks
[ 本帖最后由 惠繪洋 于 2006-2-8 11:57 编辑 ] |
|