2016-10-18 6 views
-1

Ich erstelle ein kartenbezogenes Programm in C++, das eine Datenbank verwendet. Nach dem Empfang von Schülernamen und -nummern als Eingabe stoppt es, wenn ich die INSERT-Funktion ausführe.C++ MySQL Fehler einfügen?

enter image description here

▲ DB anlegen Detail (hakbun, name)

#include<iostream> 
#include<string> 
#include<stdio.h> 
#include<mysql.h> 
#include<conio.h> 
#pragma comment(lib,"libmysql.lib") 
#pragma comment(lib,"ws2_32.lib") 
using namespace std; 

#define DB_HOST "localhost" 
#define DB_USER "root" 
#define DB_PASS "1234" 
#define DB_NAME "point_db" 

void DBconnect() { 

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

mysql_init(&conn); 
connection = mysql_real_connect(&conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 3306, (char *)NULL, 0); 
if (connection == NULL){ 
    printf("con error"); 
} 

mysql_query(connection, "set session character_set_connection=euckr;"); 
mysql_query(connection, "set session character_set_results=euckr;"); 
mysql_query(connection, "set session character_set_client=euckr;"); 
} 

int main() 
{ 
MYSQL *connection = NULL, conn; 
MYSQL_RES *sql_result; 
MYSQL_ROW sql_row; 

DBconnect(); 

int query_stat; 
char query[1024]; 
char num; 

while (1) { 

    cout << "   +--------------------+" << endl; 
    cout << "   | ① create card |" << endl; 
    cout << "   +--------------------+" << endl; 
    cout << "    input number > "; 
    cin >> num; 

    switch (num) { 

    case '1': 

    int i, hakbun, student; 
    char name; 

    cout << "student id : "; 
    cin >> hakbun; 
    cout << "mame : "; 
    cin >> name; 

    // insert 
    sprintf_s(query, "insert into point(hakbun, name) values('%d','%s')", hakbun, name); 

    query_stat = mysql_query(connection, query); 
    if (query_stat != 0){ 
    printf("error : %s", mysql_error(&conn)); 
    return 1; 
    } 

    default: 
    cout << "end program" << endl; 
    exit(0); 
    } 
} 
} 

Antwort

0

Sie erklären name als char und Sie %s-sprint es. Versuchen Sie query auf dem Bildschirm zu drucken, um zu sehen, welche Abfrage an MySql gesendet wird. Entweder Sie erklären name als String:

char name[50]; 

oder verwenden %c statt %s

+0

So wie ich es ändern? Sie müssen ein anderes Zeichen und kein einzelnes Zeichen eingeben. –

+0

@MinjuPark Es sollte ein 'char' Array oder' std :: string' sein. – Barmar

+0

@MinjuPark Ich habe die Antwort geändert – AhmadWabbi