我对c ++ Mysql连接器有一点“问题”。我想用PreparedStatement。我尝试了文档http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-prepared-statements.html
中的示例我无法编译此代码。我仍然得到错误:
main.cpp:32:10:错误:无效使用不完整类型'class sql :: PreparedStatement' 在/usr/include/mysql_connection.h:28:0中包含的文件中, 来自main.cpp:4: /usr/include/cppconn/connection.h:44:7:错误:'class sql :: PreparedStatement'的前向声明
我使用debian 7和g ++ 4.7.2。
我一直在谷歌搜索几个小时,我不知道如何解决这个问题。 我很乐意接受任何建议。
我的代码:
#include <iostream>
#include <cstdlib>
#include <mysql_connection.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
int main(int argc, char** argv) {
try{
sql::Driver *driver;
sql::Connection *con;
sql::PreparedStatement *prep_stmt;
driver = get_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "username", "pass");
// db name
con->setSchema("aa");
prep_stmt = con->prepareStatement("INSERT INTO test(id, name) VALUES (?, ?)");
// this will couse compilation error
prep_stmt->setInt(1, 1);
// this will cause only warning but same message
delete prep_stmt;
delete con;
}
catch (sql::SQLException &e) {
std::cout << "ERR: " << e.what() << std::endl;
}
return 0;
}
答案 0 :(得分:12)
缺少一个#include,你必须设置:
#include <cppconn/prepared_statement.h>
答案 1 :(得分:1)
问题是由于链接,因为你没有安装mysql驱动程序,或者没有在编译命令中添加。
您可以先安装驱动程序: sudo apt-get -y install libmysqlcppconn5 libmysqlcppconn-dev
安装完成后,编译它: g ++ -o main.cpp -lmysqlcppconn
使用IDE,您可以按照此链接在IDE中添加库。
MySQL Connector/C++: how to build a client on Linux using NetBeans