2016-07-18 2 views
0

인한 문제! 내가 제대로 실행하는 내 SQL 쿼리를C++ 문자열 출력 중 충돌하거나 인쇄 쓰레기

출력이 콘솔은,하지만 난 ^^^ 얻을 때 ^^^^^ ! 그래픽 인터페이스 또는 충돌합니다.

내 프로그램은 Visual Studio 2005에서 컴파일되고 Allegro.cc 라이브러리를 사용합니다.이 프로그램은 부활해야하는 오래된 프로젝트입니다.

는 내가하고 싶은 것입니다 :

1 실행 그래픽 인터페이스는 어떤 행동은 그들이 MySQL을 데이터를 저장 가고있다.

2 이제 모든 사람들이 DB를 쿼리하고 데이터를 가져와야합니다.

3 쿼리 한 데이터를 그래픽 화면에 표시하려고합니다.

MySQl 커넥터는 사이트의 바이너리가 포함 된 1.1.7입니다. MySQL은 XAMP 턴키 리눅스에서 실행되는

은 5.5.33-0 박스 +

스키마 엔진은 wheezy1 : 이노 테이블 정렬이 UTF-8 기본 데이터 정렬 약동학은 NN, AI입니다.

한 열 이름 (9) 또 다른 열 이름, INT cardIndex이다 (11)

코드의 조각은 다음과 같습니다 PointOfSaleID, VARCHAR입니다 :

std::stringstream OutputStream; 
(...) 

prep_stmt = con -> prepareStatement ("SELECT * FROM `Triangulo`.`CardsSold` WHERE HitsA > 4 AND HitsB > 4 AND HitsC >4"); 

res = prep_stmt -> executeQuery(); 

con -> commit(); 

while (res -> next()) { 
    OutputStream << res -> getInt("idCardsSold"); 
    textprintf_ex(OUTPUT, font, 10, 10, makecol(255,255,255), 

makecol(0,0,0), "Winner Card %s", OutputStream.str().c_str()); 
     OutputStream.str(std::string()); // clear the string stream 

CRASHES HERE! OutputStream << res -> getString("PointOfSaleID"); 
     textprintf_ex(OUTPUT, font, 10, 300, makecol(255,255,255), makecol(0,0,0), "PointOfSaleID %s", OutputStream.str().c_str()); 

나는에 같은 일을 수행 할 때 콘솔 - 텍스트 출력 - 프로그램이 올바르게 실행됩니다.

prep_stmt = con -> prepareStatement ("SELECT * FROM `Triangulo`.`CardsSold` WHERE HitsA > 4 AND HitsB > 3 AND HitsC >4"); 

res = prep_stmt -> executeQuery(); 

con -> commit(); 

    /* fetch the data : retrieve all the rows in the result set */ 

while (res -> next()) { 
    cout << Card: "; 
    cout << res -> getInt("idCardsSold") << endl; 


    OutputStream << res -> getString("PointOfSaleID"); 
    std::string resultstr = OutputStream.str(); 

    const char* cstr2 = resultstr.c_str(); 

    cout << "Loja Venda: "; 
    cout << cstr2 << endl; 

    cout << res -> getString("PointOfSaleID") << endl; 
} 

std :: stringstream OutputStream에 문제가있는 것 같지만 무슨 일이 일어나는지 알 수 없습니다.

도움을 주시면 감사하겠습니다.

답변

0

오류는 내 것이 었습니다. Visual Studio에서 잘못된 라이브러리 설정 및 조합을 사용했습니다. 알고 싶으 시다면, MySQL 서버의 다른 라이브러리와 함께 cpp 용 MySQL Connector의 라이브러리를 잘못 처리 한 것입니다. 나는 지침을 다시 읽고 실수가 있음을 알았습니다. catch는 커넥터가 잘못된 라이브러리 설정, 요소 및 조합으로도 getInt()에서 작동하고 getString()에서 작동하지 않는다고합니다.

1

이 오류를 재현하는 데 필요한 최소 코드를 줄입니다

나는 나 같은 초보자에게 어쩌면 중요성을 사용하는 방법은, 따라서이 아래에 나열되어 있습니다. 2 사용하려는 제품의 설명서를 읽으십시오. 3- 서면으로 그리고 장황한 형태로 무엇을 성취하고자하는지 다른 사람들에게 설명하십시오. 4 일부 수면 후에 자신의 질문을 수정하십시오.

이것은 나를 위해 일했습니다.