2013-11-05 2 views
0

이것은 (add_tbl)라는 데이터베이스에 연결하는 C 프로그램입니다. 이제 내 쿼리에서 데이터베이스 이름을 언급해야합니다. 그것없이 어떻게 데이터베이스에 연결하고 결과를 저장할 것인가? 데이터베이스 이름 이군 누군가가 나를 인도 목소리로 듣기에는 좋은 사람 같던데 이해할 수 아니에요 지정하는 곳어떻게하면 C 프로그램을 MySQL에 연결할 수 있습니까?

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <unistd.h> 
#include <my_global.h> 
#include <mysql.h> 

typedef struct 
{ 
    char host[20]; 
    char user[25]; 
    char pass[50]; 
}DB_CONN_PARAMS; 

int main() 
{ 
    MYSQL *db; 
    char query_str[150]; 
    int num1, num2, q_status; 
    DB_CONN_PARAMS *params = calloc(1,sizeof(DB_CONN_PARAMS)); 
    params->host = "127.0.0.1"; 
    params->user = "root"; 
    params->pass = "Password"; 
    MYSQL * connect_db(DB_CONN_PARAMS *params); 
    db = connect_db(params); 
    free(params); 
    //get numbers 
    scanf("%d %d", num1, num2); 

    //insert num1, num2 and sum into query string 
    printf(query_str,"INSERT INTO add_tbl (num1, num2, sum) VALUES (%d,%d %d);", 
      num1,num2,(num1 + num2)); 

    //run the query 
    q_status = mysql_query(db, query_str); 
    if (q_status) 
    {  //insert failed 
     fprintf(stderr, "Failed to execute \"%s\"\n%s\n", query_str, mysql_error(db)); 
     mysql_close(db); 
     exit(EXIT_FAILURE); 
    } 

    printf("Insert successful:\nQuery used: \"%s\"\n", query_str); 
    mysql_close(db); 
    return EXIT_SUCCESS; 
} 

내 데이터베이스 테이블 이름은 'add_tbl' 입니다.

+0

에 (편의상)을 변경할 수 있습니다, 나는 한 가지 문제를 발견 즉, 이것 :'(% d, % d % d)'는 다음과 같아야합니다 :'(% d, % d, % d)' – WhozCraig

답변

1

귀하의 connect_db()이 무엇인지 모르지만 mysql_real_connect()을 사용해야합니다. 여기서 데이터베이스를 db 매개 변수로 설정할 수 있습니다.

나중에 기본 데이터베이스를 변경하려면 mysql_select_db()을 사용하면됩니다.

BTW, 대신

DB_CONN_PARAMS *params = calloc(1,sizeof(DB_CONN_PARAMS)); 
params->host = "127.0.0.1"; 
params->user = "root"; 
params->pass = "Password"; 
MYSQL * connect_db(DB_CONN_PARAMS *params); 
db = connect_db(params); 
free(params); 

을하고 당신이 편집 한 후도

DB_CONN_PARAMS params = {}; 
params.host = "127.0.0.1"; 
params.user = "root"; 
params.pass = "Password"; 
// MYSQL * connect_db(DB_CONN_PARAMS *params); // omit that here, it belongs either to the header or above the current function 
db = connect_db(&params); 

또는

DB_CONN_PARAMS params = { .host = "127.0.0.1", .user = "root", .pass = "Password" }; 
db = connect_db(&params); 
관련 문제