mysql 未找到 WinSxS,MySql C ++连接器getString()不能正常工作,而getInt工作完美

I tried to connect C++ to MySql and I just can't get this to work properly. I used latest MySql and C++/Connector for Windows from Oracle site. I also use VS2010.

It compiles and everything works EXCEPT getString! I used the example that they supply with some tweaking:

#include "stdafx.h"

#include

#include

#include

#include

#include

#include "examples.h"

using namespace std;

int main(int argc, const char **argv)

{

string url(argc >= 2 ? argv[1] : EXAMPLE_HOST);

const string user(argc >= 3 ? argv[2] : EXAMPLE_USER);

const string pass(argc >= 4 ? argv[3] : EXAMPLE_PASS);

const string database(argc >= 5 ? argv[4] : EXAMPLE_DB);

/* sql::ResultSet.rowsCount() returns size_t */

size_t row;

stringstream sql;

stringstream msg;

int i, affected_rows;

cout << boolalpha;

cout << "1..1" << endl;

cout << "# Connector/C++ connect basic usage example.." << endl;

cout << "#" << endl;

try {

sql::Driver * driver = sql::mysql::get_driver_instance();

/* Using the Driver to create a connection */

std::auto_ptr< sql::Connection > con(driver->connect("localhost", "root", "root"));

/* Creating a "simple" statement - "simple" = not a prepared statement */

std::auto_ptr< sql::Statement > stmt(con->createStatement());

/* Create a test table demonstrating the use of sql::Statement.execute() */

stmt->execute("USE publications");

cout << "#\t Test table created" << endl;

/* Populate the test table with data */

cout << "#\t Test table populated" << endl;

{

/*

Run a query which returns exactly one result set like SELECT

Stored procedures (CALL) may return more than one result set

*/

std::auto_ptr< sql::ResultSet > res(stmt->executeQuery("SELECT id, task FROM to_do_list ORDER BY id ASC"));

cout << "#\t Running 'SELECT id, task FROM to_do_list ORDER BY id ASC'" << endl;

/* Number of rows in the result set */

cout << "#\t\t Number of rows\t";

cout << "res->rowsCount() = " << res->rowsCount() << endl;

if (res->rowsCount() != EXAMPLE_NUM_TEST_ROWS) {

msg.str("");

msg << "Expecting " << EXAMPLE_NUM_TEST_ROWS << "rows, found " << res->rowsCount();

throw runtime_error(msg.str());

}

/* Fetching data */

row = 0;

while (res->next()) {

cout << "#\t\t Fetching row " << row << "\t";

/* You can use either numeric offsets... */

cout << "id = " << res->getInt("id");

/* ... or column names for accessing results. The latter is recommended. */

cout << ", task = '" << res->getString("task") << "'" << endl;

row++;

system("PAUSE");

}

}

... //the rest isn't relevant because it breaks here.

This is the output:

1..1

# Connector/C++ connect basic usage example..

#

# Test table created

# Test table populated

# Running 'SELECT id, task FROM to_do_list ORDER BY id ASC'

# Number of rows res->rowsCount() = 4

# Fetching row 0 id = 3, task = ''

Press any key to continue . . .

# Fetching row 1 id = 7, task = ''

Press any key to continue . . .

☼ Ñ╤½x R= I> ☼ £I> task  ↕ 4å@ xQ@ ♦ ☼ ☻ ocalhost ½xÇ

'

Press any key to continue . . .

and this is what the table looks like so clearly it's not working properly. I just can't get it to get the strings which are varchar(120) from MySql:

mysql> use publications

Database changed

mysql> select id, task from to_do_list;

+----+---------------------------+

| id | task |

+----+---------------------------+

| 9 | prepare for calculus |

| 3 | buy jeans |

| 8 | buy new scale |

| 7 | buy Ethics book for class |

+----+---------------------------+

4 rows in set (0.00 sec)

I tried VS2008 and this is what I get:

msvcp90d.dll!104e8dcb()

[Frames below may be incorrect and/or missing, no symbols loaded for msvcp90d.dll]

try_mysql_native.exe!std::operator< & os={...}, const sql::SQLString & str={...}) Line 196 + 0x1f bytes C++

try_mysql_native.exe!main(int argc=1, const char * * argv=0x003e63e8) Line 115 + 0xa5 bytes C++

try_mysql_native.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C

try_mysql_native.exe!mainCRTStartup() Line 403 C

kernel32.dll!7c817077()

and this:

'try_mysql_native.exe': Loaded 'C:\Documents and Settings\Eugene\My Documents\Visual Studio 2008\Projects\try_mysql_native\Debug\try_mysql_native.exe', Symbols loaded.

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\mysqlcppconn.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\libmysql.dll', Symbols loaded.

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\secur32.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\ws2_32.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\ws2help.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4974_x-ww_d889290f\msvcp90.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4974_x-ww_d889290f\msvcr90.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcr90d.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\msvcp90d.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\mswsock.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\dnsapi.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\winrnr.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\wldap32.dll'

'try_mysql_native.exe': Loaded 'C:\Program Files\Bonjour\mdnsNSP.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\iphlpapi.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\user32.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\imm32.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\rasadhlp.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\hnetcfg.dll'

'try_mysql_native.exe': Loaded 'C:\WINDOWS\system32\wshtcpip.dll'

First-chance exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

Unhandled exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

First-chance exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

Unhandled exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

First-chance exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

Unhandled exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

First-chance exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

Unhandled exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

First-chance exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

Unhandled exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

First-chance exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

Unhandled exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

First-chance exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

Unhandled exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

First-chance exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

Unhandled exception at 0x104e8dcb in try_mysql_native.exe: 0xC0000005: Access violation reading location 0x6e61656a.

解决方案

Are you sure task-column doesn't have the binary collation set? If so, the connector may return different metadata for the same column.

Update:

Also, check that the Connector has been compiled with the same runtime as your project. If using VS, I bet the other one was compiled with /MT and the other with /MD. This way, they use different heaps and it won't work.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值