Using C++ in Xcode I try to access a MySQL database with the MySQL Connector/C++. Problem is that the program (compiled with Xcode) always crashes with
EXC_BAD_ACCESS (code=13, address=0x0)
when calling
driver->connect(url, user, pass)
In Xcode I created a complete new project (OS X > Command Line Tool), inserted the code (see below) in the main.cpp, added Boost and MySQL Connector header include paths as well as libmysqlcppconn.6.1.1.1.dylib as Link Library and hit the Run button.
Next thing is, when I compile the program manually using
c++ -o test -I /usr/local/mysqlConnector/include/ -lmysqlcppconn main.cpp
the program runs fine and also runs the INSERT statement on the table.
The program code is taken from the MySQL Connector/C++ examples, namely the pthreads.cpp example, but truncated to the essential parts:
/* Standard C++ includes */
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <stdexcept>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
std::string url;
std::string user;
std::string pass;
std::string database;
/**
* Usage example for Driver, Connection, (simple) Statement, ResultSet
*/
int main(int argc, const char **argv)
{
sql::Driver *driver;
std::auto_ptr< sql::Connection > con;
url = "tcp://127.0.0.1:3306";
user = "appserver";
pass = "testpw";
database = "appserver";
try {
driver = sql::mysql::get_driver_instance();
/* Using the Driver to create a connection */
con.reset(driver->connect(url, user, pass));
con->setSchema(database);
sql::Statement* stmt = con->createStatement();
stmt->execute("INSERT INTO testtable (testnumber) values (5)");
} catch (sql::SQLException &e) {
return EXIT_FAILURE;
} catch (std::runtime_error &e) {
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}