2016-11-05 4 views
0
sprintf_s(query, "update point set p%d=%d where hakbun='%d';", no, point, hakbun); 

に照会するためのコマンド。DB(MYSQL)は、データベース内のデータは文章の理由のために出力されていないC++

何が問題ですか?

void updatePoint(MYSQL *con) { 

    MYSQL * connection = NULL, conn; 
    MYSQL_RES * sql_result; 
    MYSQL_ROW sql_row; 

    int hakbun, field, j, query_stat, no, point; 
    char query[1024]; 

    cout << "student id > "; 
    cin >> hakbun; 

    cout << "   ┌────────────────────────────┐" << endl; 
    cout << "   └────────────────────────────┘" << endl; 
    cout << "    num > "; 
    cin >> no; 
    cout << "        point > "; 
    cin >> point; 

    sprintf_s(query, "update point set p%d='%d' where hakbun='%d';", no, point, hakbun); 
    sprintf_s(query, "select * from point where hakbun = '%d';", hakbun); 
    cout << sizeof(query) << endl; 
    query_stat = mysql_query(connection, query); 
    sql_result = mysql_store_result(connection); 
    while ((sql_row = mysql_fetch_row(sql_result)) != NULL) { 
     void table(); 
     printf(" %s\t %s  %s   %s  %s  %s\t%s\t%s\t %s\t%s\t%s\n", sql_row[0], sql_row[1], sql_row[2], sql_row[3], sql_row[4], sql_row[5], sql_row[6], sql_row[7], sql_row[8], sql_row[9], sql_row[10]); 
    } 
    mysql_free_result(sql_result); 
} 
+0

「UPDATE」クエリは結果を返しません。データベースからデータをフェッチするには、 'SELECT'を使う必要があります。 – Barmar

+0

@Barmarしかし、あなたは 'SELECT'で情報を更新できませんか? –

+0

そうです。 2つのクエリを実行する必要があります。最初に更新してから、テーブルの内容を取得することを選択します。 – Barmar

答えて

0

あなたがselectクエリでqueryを再割り当てする前にupdateクエリを実行する必要があります。

また、sprintf_s()の2番目の引数がありません。これには、queryバッファのサイズが含まれている必要があります。そしてtable()を呼び出すときには、その前にvoidを置くべきではありません。それは関数呼び出しではなく関数宣言になります。

mysql_query()コールで変数connectionを使用していますが、これをMySQL接続に割り当てたことはありません。あなたの関数はconのパラメータとして接続を受け取ります。代わりにその関数を使うべきです。

sprintf_s(query, sizeof(query), "update point set p%d='%d' where hakbun='%d';", no, point, hakbun); 
mysql_query(con, query); 
sprintf_s(query, sizeof(query), "select * from point where hakbun = '%d';", hakbun); 
mysql_query(con, query); 
sql_result = mysql_store_result(con); 
while ((sql_row = mysql_fetch_row(sql_result)) != NULL) { 
    table(); 
    printf(" %s\t %s  %s   %s  %s  %s\t%s\t%s\t %s\t%s\t%s\n", sql_row[0], sql_row[1], sql_row[2], sql_row[3], sql_row[4], sql_row[5], sql_row[6], sql_row[7], sql_row[8], sql_row[9], sql_row[10]); 
} 
mysql_free_result(sql_result); 
+0

別の原因が考えられます。 残念ながら、結果はありません。 –

+0

'TABLE()'関数には 'COUT'文しかありません。 –

+0

申し訳ありませんが、私は2番目の 'mysql_query()'呼び出しを省きました。やってみよう。 – Barmar

関連する問題