qt4.7解决mysql无法连接问题(这个方法是错误的)

0起因

做题我开始做我们学校的数据库实习报告。报告上要求用sqlserver。不过我是一个开源的支持者,所以我选择了用mysql+qt开发我的程序。

我在书《c++ gui qt4 编程(第二版)》中找到了有关数据库开发的资料。首先这篇文章的解决方法并不重要,重要的是我在这次解决问题中学到了什么。

书中给的意思是连接数据库要这样写。

bool createConnection()
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("local");
    db.setDatabaseName("mytest");
    db.setUserName("root");
    db.setPassword("123456");
    if(!db.open())
    {
        printf("error\n");
    }
    else
    {
        printf("yes\n");
    }
    return true;
}

1问题


但是运行起来问题就来了。编译运行后给出的错误信息是

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC

从错误信息中可以发现其实是没有mysql的数据库驱动造成的。但是书中说qt实际上是带有数据库驱动程序的。只是由于开源许可证的原因,不能提供所有数据库的驱动程序,比如sqlserver。

2我的解决方法

于是我直接把错误信息输入百度开始查找我的解决方案,在这里我是直接搜索错误信息,连信息到底是什么都没有看全。有几个解决的非常好的帖子

http://blog.sina.com.cn/s/blog_74a7e56e01017s64.html
他们都说要自己编译驱动程序。重新安装mysql。我没有试上面的方法到底行不行。因为自己编译驱动程序是一个非常麻烦的事情,而且还不一定会发生什么其他的事情。当然现在看来我在搜索帖子的时候也浪费的很多时间。我在思考,qt和mysql同时时开源的,怎么可能不提供mysql的驱动程序呢?

所以我仔细看了一下错误信息发现第二行错误信息已经给我们解决方法了

 available drivers: QSQLITE QODBC3 QODBC

这个不就是说qt自带的驱动程序是这个吗?。所以要把我们代码改一下

bool createConnection()
{
    QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE")
    db.setHostName("local");
    db.setDatabaseName("mytest");
    db.setUserName("root");
    db.setPassword("123456");
    if(!db.open())
    {
        printf("error\n");
    }
    else
    {
        printf("yes\n");
    }
    return true;
}
运行正常

3解决问题的思考

以前在发生问题的时候我总是直接按照错误提示去百度解决方法。根本没有看清楚信息到底是什么,也没有自己思考解决方法。所以有以下总结

1书上的东西不一定对,特别是代码,因为软件每个版本都有差异

2帖子上的解决方法不一定是最好的。虽然他可能解决问题

3不要看到错误直接百度,要确保自己理解所有错误信息。

后记

这个方法不能解决问题。因为仅仅是连接上数据库,并不能进行查询,因为数据库驱动不对。

你可能感兴趣的:(qt4.7解决mysql无法连接问题(这个方法是错误的))