2014-02-04 2 views
2
sql::Connection *con; 
    sql::PreparedStatement *pstmt; 
    //connect 

    pstmt = con->prepareStatement("UPDATE table_people SET name=?, age=?"); 

    pstmt->setString(1, s); 

    pstmt->setInt(2, age()); 
    pstmt->execute(); 

std::string s это входная строка, столбец name является VARCHAR и age является INTC++, MySQL prepareStatement

код обновляет все строки, как и следовало ожидать. age верен, но name не обновлен корректно и сохранены странные символы. Почему пожалуйста?

+0

Каков точный тип «s»? Это 'std :: string?' – Ozraptor

+0

это 'std :: string', yes –

+0

Какой тип setString ожидает второй параметр? Доходит ли ваша '' 'переменная до тех пор, пока не будет вызвана функция execute() или она не будет уничтожена до этого? – TheUndeadFish

ответ

1

Поскольку мой комментарий кажется правильным, я отправлю его в качестве ответа :)

Использование

pstmt->setString(1, s.c_str()); 

(а именно, передать фактическую строку C-стиле, а не std::string).

Смежные вопросы