소스는 아래와 같습니다..
근데 update후 다시읽어 보면 프로그램상에선 세그멘테이션 폴트가 나는군요.
이리저리 바꿔어도 봤죠...변수를 다르게 해서 읽어 보기도 하구 그러나 다 마찬가지로 세그멘테이션 폴트 가 나더군요..그래서..
같은 파일 내에서 일단 close시키고 다시 열고 읽었더니만..그건 되더군요..
이거 왜 그런것이죠....DB 한번만 열구서 거기서 업데이트 하구 삭제하구 하는 것들을 여러번 할수 있어야 하는 거 아닌가요...꼭 알려 주세요....
#include <stdio.h>
#include "/usr/local/mysql/include/mysql/mysql.h"
#include <errno.h>
int main(void) {
MYSQL mysql;
MYSQL_RES* res, *res_2;
MYSQL_ROW row,row_2;
MYSQL_FIELD *field_fetch;
int fields;
int cnt;
int row_c=0;
printf("Welcome to db World!!!
");
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, NULL, "arnold","arnold", "SIP" ,3306, (char *)NULL, 0)) {
printf("%s
", mysql_error(&mysql));
exit (1);
}
else {
printf("connect success!!!
");
if (mysql_query(&mysql, "USE SIP")) {
printf("%s
", mysql_error(&mysql));
exit(1);
}
if (mysql_query(&mysql, "SELECT * FROM Contact")) {
printf("%s
", mysql_error(&mysql));
exit(1);
}
res = mysql_store_result( &mysql );
fields = mysql_num_fields(res);
printf("fields = %d
",fields);
while ( row = mysql_fetch_row( res )) {
row_c++;
printf("row_c=%d
",row_c);
for(cnt = 0; cnt <fields ; ++cnt)
printf("%12s ", row[cnt]);
printf("
");
}
res = mysql_store_result( &mysql );
mysql_query(&mysql,"UPDATE Contact SET host=\4444444444444\ where user=\janggo\;");
res = mysql_store_result( &mysql );
while ( row = mysql_fetch_row( res )) {
row_c++;
printf("row_c=%d
",row_c);
for(cnt = 0; cnt <fields ; ++cnt)
printf("%12s ", row[cnt]);
printf("
");
}
while( (field_fetch = mysql_fetch_field(res) ))
printf("field name %s
", field_fetch -> name ) ;
}
mysql_free_result( res );
mysql_close(&mysql);
return 0;
}
|