2016-12-08 4 views
0

I 출력에 MYSQL 테이블에서 행을하는 프로그램을 작성하려고하고 항상 같은 일을 출력 ... 함수는 다른 함수에서 입력을 받아에게 출력MySQL의 C++ 커넥터는 항상 동일한 문자열

C++

try { 
    sql::Driver *driver; 
    sql::Connection *con; 
    sql::Statement *stmt; 
    sql::ResultSet *res; 

/* Create a connection */ 
driver = get_driver_instance(); 
con = driver->connect("tcp://127.0.0.1:3306", "root", "TSA!"); 
/* Connect to the MySQL test database */ 
con->setSchema("main"); 

stmt = con->createStatement(); 
stmt->execute("CALL getData('" + quest1 +"', @ans)"); 
res = stmt->executeQuery("SELECT @ans AS _message"); 
while (res->next()) { 
    cout << "Answer: "; 
    /* Access column data by alias or column name */ 
    cout << res->getString("_message") << endl; 
} 
delete res; 
delete stmt; 
delete con; 
} 

이 프로그램에서 오류가 발생하지 않습니다.

MySQL의

CREATE DEFINER=`root`@`localhost` PROCEDURE `getData`(IN info MEDIUMTEXT, 
OUT datas MEDIUMTEXT) 
BEGIN 
    SELECT `answer` from `approved` WHERE `Question` = info into datas; 
END 

표 : 질문 | 대답 시험 | 테스트 테스트 2 | test2

프로그램은 항상 "test"만 출력합니다. 어떻게 수정합니까?

+0

출력 :'cout << quest1;'을 사용하여 보내시는 매개 변수를 확인하십시오. – Alex

답변

0

문자열에 cin 대신 cin.getline을 사용하여 사용자가 입력 한 문자를 가져 와서 문제를 해결했습니다.

cin으로 기존 버퍼를 지울 수 있는데 문제가 있다고 생각합니다.