0

これは、(add_tbl) というデータベースに接続する私の C プログラムです。今、私のクエリは、データベース名に言及する必要がある場所です。それがなければ、どのようにデータベースに接続して結果を保存するのでしょうか?

#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」です.私はそれを理解することができません.誰かが私を案内してください.

4

1 に答える 1

0

あなたが何をしているのかはわかりませんconnect_db()が、 を使用することになっていますmysql_real_connect()。そこで、データベースを parameter として設定できますdb

後でデフォルトのデータベースを変更したい場合は、mysql_select_db().

ところで、代わりに

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);
于 2013-11-05T07:30:27.630 に答える