我正在尝试从我的网站连接数据库并使用C++显示一些行.所以基本上我正在尝试创建一个应用程序,从我的站点数据库中的表中执行选择查询.现在,这必须是可能的,因为我已经看到大量应用程序在做这件事.
我该怎么做呢?有人可以举例说明我应该使用哪些库?
hd1*_*hd1 33
在这里找到:
/* Standard C++ includes */
#include <stdlib.h>
#include <iostream>
/*
Include directly the different
headers from cppconn/ and mysql_driver.h + mysql_util.h
(and mysql_connection.h). This will reduce your build time!
*/
#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", "root");
/* Connect to the MySQL test database */
con->setSchema("test");
stmt = con->createStatement();
res = stmt->executeQuery("SELECT 'Hello World!' AS _message"); // replace with your statement
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;
}
Run Code Online (Sandbox Code Playgroud)
mun*_*ali 10
最后,我可以在Ubuntu 12.04中使用C++连接器成功编译程序.我已使用此命令安装了连接器
'apt-get install libmysqlcppconn-dev'
Run Code Online (Sandbox Code Playgroud)
最初我遇到了同样的问题"未定义引用`get_driver_instance'"来解决这个问题我声明了MySQL_Driver类型的驱动程序实例变量.对于准备参考,此类型在mysql_driver.h文件中定义.这是我在程序中使用的代码片段.
sql::mysql::MySQL_Driver *driver;
try {
driver = sql::mysql::get_driver_instance();
}
Run Code Online (Sandbox Code Playgroud)
我用-l mysqlcppconn链接器选项编译了程序
并且不要忘记包含此标题
#include "mysql_driver.h"
Run Code Online (Sandbox Code Playgroud)
是的,您将需要mysql c ++连接器库.请继续阅读下面的内容,在这里我将解释如何让mysql开发人员给出的示例.
注意(和解决方案):IDE: 我尝试使用Visual Studio 2010,但仅仅几秒钟之前,这一切都工作,似乎我在手册中错过了它,但它建议使用Visual Studio 2008.我下载并安装VS2008 Express for c ++,按照手册第5章中的步骤进行操作,错误消失了!有用.我很高兴,问题解决了.除了如何让它在更新版本的visual studio上工作之外.您应该尝试使用Visual Studio插件的mysql,这可能会获得vs2010或更高版本以成功连接.它可以从mysql网站下载
虽然试图让上面提到的例子起作用,但我发现自己因为mysql开发网站的变化而遇到困难.我为写这个作为答案而道歉,因为我还没有发表评论,并且会在我发现该做什么并找到解决方案时进行编辑,以便未来的开发人员可以得到帮助.(因为这已经变得如此之大,所以不会无论如何都适合作为评论,哈哈)
@ hd1链接到"一个例子"不再有效.在链接之后,最终会在页面上显示链接到主要手册的页面.主要手册是一个很好的参考,但似乎相当陈旧和过时,新开发人员很难,因为我们没有经验,特别是如果我们丢失某个文件,然后添加什么.
@ hd1的链接已经移动了,可以通过删除url组件快速搜索找到,只保留文章名称,不管怎么说: http ://dev.mysql.com/doc/connector-cpp/en/connector -cpp-例子完成-示例-1.HTML
获取7.5 MySQL Connector/C++完成示例1工作
下载:
- 获取mysql c ++连接器,即使它更大,选择安装程序包,而不是zip.
- 从boost.org获取boost库,因为boost用于connection.h,而mysql_connection.h来自mysql c ++连接器
现在继续:
- 将连接器安装到c驱动器,然后转到mysql服务器安装文件夹/ lib并复制所有libmysql文件,并粘贴到连接器安装文件夹/ lib/opt中
- 将boost库提取到c驱动器
下一个:
可以从示例中复制代码(上面链接,并且当然是新的c ++项目).您会注意到错误:
- 第一:改变
cout << "(" << __FUNCTION__ << ") on line " »
<< __LINE__ << endl;
Run Code Online (Sandbox Code Playgroud)
至
cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;
Run Code Online (Sandbox Code Playgroud)
不确定那个微小的双箭头是什么,但我不认为它是c ++的一部分
-Second:通过阅读sql手册的第5章来修正它们的其他错误,请注意我关于下面第5章的段落
[注1]:第5章使用Microsoft Visual Studio构建MySQL Connector/C++ Windows应用程序 如果您按照本章使用最新的c ++连接器,您可能会看到连接器文件夹中的内容和图像中显示的内容完全不同.无论你是在mysql服务器上安装include和lib文件夹,还是在mysql c ++连接器文件夹'include和lib文件夹中,它都不会完全匹配,除非他们更新手册,或者你有神奇的下载,但对我来说他们没有与2014年3月发起的连接器下载相匹配.
按照第5章,
- 但是对于c/c ++,常规,附加包含目录包括您安装的连接器中的"include"文件夹,而不是服务器安装文件夹
- 尽管如此,还包括您的boost文件夹,请参阅下面的注释2
- 对于Linker,General ..等使用connector/lib/opt中的opt文件夹
*[注2]*第二个包含需要发生,你需要包括来自boost库variant.hpp,这与上面相同,添加你从boost zip下载中提取的主文件夹,而不是boost或lib或在boostmainfolder/boost中找到的子文件夹"variant".只是作为第二个包含的主文件夹
下一个:
接下来我认为是静态构建,这也是我所做的.跟着它.
然后构建/编译.出现LNK错误(编辑:将ide更改为visual studio 2008后消失).我认为这是因为我应该自己构建连接器(如果你在visual studio 2010中这样做,那么链接错误应该会消失),但是自从周四以来我一直试图让它工作,看看我是否有动力看到这一点在一个良好的睡眠后(并做了,现在完成:)).