2012-01-18 84 views
0

我有一个连接到MySQL数据库的DLL。我有Open(),Close(),Update()和Find()函数。 Update()函数将数据插入到表中,这很好。然而Find()函数只是对同一个表进行简单的查询。当我调用结果集getXX()函数时,出现访问冲突错误,我找不到原因。我错过了什么?请注意,查询是一个视图,而不是一个直接的表,但我不认为这是重要的。MySQL C++查询访问冲突

MT4_EXPFUNC int __stdcall Find(char* pair) 
{ 
try 
{ 
    sql::Statement *stmt; 
    sql::ResultSet* res; 
    string p = pair; 
    string buysell = ""; 
    string qry = "select * from forex.GPBUSD_CURRENT_PRICE"; 

    stmt = _connection->createStatement(); 

    res = stmt->executeQuery(qry); 

    // if we have a record it means we have a trade chance 
    if(res->next()) 
    { 
     buysell = res->getString(1);  // ACCESS VIOLATION ERROR HERE 
    } 

    // clean up 
    delete res; 
    delete stmt; 

    if(buysell == "SELL") 
     return 1; 
    else if(buysell == "BUY") 
     return 2; 
    else 
     return 0; 
} 
catch(sql::SQLException &e) 
{ 
    return -1; 
} 
} 

回答

0

如果getString是一个零索引方法,你有没有考虑过?或者,如果它是你试图访问的空数据类型?或射击只是因为res-> next()的作品,并没有崩溃,并不意味着res是一个有效的ptr。

+0

我有超过1列,所以即使它是零索引它应该拉一列。它也不应该为空,因为我在MySQL工作台中运行查询并返回结果。如果它是NULL,你如何在阅读前检查它? – user441521 2012-01-18 13:12:10

+0

我在它之前放了一个if(!res-> isNull(1)),并且它通过了这个检查,所以它不是null。 – user441521 2012-01-18 13:13:59

+0

所以如果水库不是一个有效的指针可能会导致什么?这是问题。为什么它不是有效的? – user441521 2012-01-18 13:25:24