#include "StdAfx.h"
#include <stdlib.h>
#include <iostream>
#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
using namespace std;
int main(void){
cout << endl;
try{
sql::Driver *driver;
sql::Connection *con;
sql::Statement *stmt;
sql::ResultSet *res;
sql::PreparedStatement *pstmt;
driver = get_driver_instance();
con = driver->connect("REMOVED", "REMOVED", "REMOVED");
con->setSchema("REMOVED");
stmt = con->createStatement();
res = stmt->executeQuery("SELECT username FROM player WHERE id=1");
cout << "Username: " << res->getString("username") << endl;
delete res;
delete con;
cout << "Done.";
system("pause");
}catch(sql::SQLException &e){
cout << "# ERR: SQLException in " << __FILE__;
cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;
cout << "# ERR: " << e.what();
cout << " (MySQL error code: " << e.getErrorCode() << endl;
cout << ", SQLState: " << e.getSQLState() << " )" << endl;
system("pause");
}
return 0;
}
се превръща в... http://i.imgur.com/cIVnl.png
Какво се случва? :( Това е едва вторият ми ден, когато работя със C++, така че простете ми ужасно форматираното кодиране и други глупави грешки. Това винаги се показва точно преди да получа необработено изключение.
__FILE__
,__FUNCTION__
и__LINE__
ще се разширят до името на файла, името на функцията и номера на реда на клаузатаcatch
, а не името на файла, името на функцията и номера на реда, където е хвърлено самото изключение. Не съм сигурен дали това е информацията, която наистина искате. т.е. ще получите нещо катоERR: SQLException in foo.cpp (main) on line 42 ...
- person Max Lybbert   schedule 07.03.2012