2013-03-20 93 views
0

我有64位,下載了32,但崩潰(這是因爲沒有與LIB文件的錯誤少,所以我不得不使用32,但) 所做的一切都是在這裏:http://dev.mysql.com/doc/refman/5.6/en/connector-cpp-apps-windows-visual-studio.html#connector-cpp-application-build-dynamic的MySQL在連接功能

但該計劃在「connect'function崩潰:

http://imageshack.us/photo/my-images/827/25478716.jpg/

任何想法,該怎麼辦? 這裏是我想編譯的源代碼。

#include <stdlib.h> 
#include <iostream> 
#include <Windows.h> 

/* 
    Include directly the different 
    headers from cppconn/ and mysql_driver.h + mysql_util.h 
    (and mysql_connection.h). This will reduce your build time! 
*/ 
//__declspec(dllexport) 
#include "mysql_connection.h" 

#include <cppconn/driver.h> 
#include <cppconn/exception.h> 
#include <cppconn/resultset.h> 
#include <cppconn/statement.h> 
using namespace std; 

int main(void) 
{ 
cout << endl; 
cout << "Running 'SELECT 'Hello World!' » AS _message'..." << endl; 

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", "pass");// 
    /* Connect to the MySQL test database */ 
    con->setSchema("test"); 

    stmt = con->createStatement(); 
    res = stmt->executeQuery("SELECT 'Hello World!' AS _message"); 
    while (res->next()) { 
    cout << "\t... MySQL replies: "; 
    /* Access column data by alias or column name */ 
    cout << res->getString("_message") << endl; 
    cout << "\t... MySQL says it again: "; 
    /* Access column fata by numeric offset, 1 is the first column */ 
    cout << res->getString(1) << endl; 
    } 
    delete res; 
    delete stmt; 
    delete con; 

} 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(); 
    cout << ", SQLState: " << e.getSQLState() << ")" << endl; 
} 

cout << endl; 

return EXIT_SUCCESS; 
} 
+0

dopn't您指定的連接字符串? – 4pie0 2013-03-20 00:40:18

+0

奇怪,但在VS 2008的工作..我可以使它在這VS12工作? – user2080060 2013-03-20 00:43:55

回答

0

您可以嘗試構建不同的方式連接:

#include <mysql.h> 
#include <stdio.h> 
#include <stdlib.h> 

// just going to input the general details and not the port numbers 
struct connection_details 
{ 
    char *server; 
    char *user; 
    char *password; 
    char *database; 
}; 

MYSQL* mysql_connection_setup(struct connection_details mysql_details) 
{ 
    // first of all create a mysql instance and initialize the variables within 
    MYSQL *connection = mysql_init(NULL); 

    // connect to the database with the details attached. 
    if (!mysql_real_connect(connection,mysql_details.server, mysql_details.user, mysql_details.password, mysql_details.database, 0, NULL, 0)) { 
     printf("Conection error : %s\n", mysql_error(connection)); 
     exit(1); 
    } 
    return connection; 
} 

MYSQL_RES* mysql_perform_query(MYSQL *connection, char *sql_query) 
{ 
    // send the query to the database 
    if (mysql_query(connection, sql_query)) 
    { 
     printf("MySQL query error : %s\n", mysql_error(connection)); 
     exit(1); 
    } 

    return mysql_use_result(connection); 
} 

int main() 
{ 
    MYSQL *conn;  // the connection 
    MYSQL_RES *res; // the results 
    MYSQL_ROW row; // the results row (line by line) 

    struct connection_details mysqlD; 
    mysqlD.server = "localhost"; // where the mysql database is 
    mysqlD.user = "mysqlusername";  // the root user of mysql 
    mysqlD.password = "mysqlpassword"; // the password of the root user in mysql 
    mysqlD.database = "mysql"; // the databse to pick 

    // connect to the mysql database 
    conn = mysql_connection_setup(mysqlD); 

    // assign the results return to the MYSQL_RES pointer 
    res = mysql_perform_query(conn, "show tables"); 

    printf("MySQL Tables in mysql database:\n"); 
    while ((row = mysql_fetch_row(res)) !=NULL) 
     printf("%s\n", row[0]); 

    /* clean up the database result set */ 
    mysql_free_result(res); 
    /* clean up the database link */ 
    mysql_close(conn); 

    return 0; 
} 

see here完整的例子