1、查看Qt5.4.2支持哪些数据库驱动
(1)相关代码
QStringList drivers = QSqlDatabase::drivers ();
foreach (QString driver, drivers) {
qDebug() << "\n" << driver;
}
(2) 数据库驱动程序一览
驱动程序 | 数据库 |
---|---|
“QSQLITE” | “SQLite第3版” |
“QMYSQL” | “MySQL” |
“QMYSQL3” | “” |
“QODBC” | “ODBC(微软的SQL服务器)” |
“QODBC3” | “” |
“QPSQL” | “PostgreSQL” |
“QPSQL7” | “” |
(3)设置环境变量
控制面板/系统和安全/系统/系统属性/高级/环境变量。
D:\qt5.4.2\5.4\mingw491_32\bin;D:\qt5.4.2\Tools\mingw491_32\bin;D:\MySQL\MySQL Server 5.5\bin
2、定义一个函数,查看访问是否成功
(1)使用QLabel显示信息
QLabel *label = new QLabel(this);
label->setGeometry (QRect(50,50,200,25));
if (isOpen)
{
label->setText (tr("连接成功"));
}
else
{
label->setText (tr("连接失败"));
}
(2)使用QMessageBox类
if (isOpen)
{
QMessageBox::information (this,"提示","连接成功");
}
else
{
QMessageBox::warning (this,"警告","连接失败");
}
3、访问MySQL数据库
(1)安装路径相关问题
MySQL6及以上的版本无法选择安装路径,如果是默认安装,会安装在C:\Program Files文件夹,路径名中有空格,在Qt MinGW下是无法解析的(D:\Program Files\MySQL Server 5.5,中间存在空格)。
(2)解决方法
在C盘创建一个没有空格的mysql文件夹,将D:\MySQL\MySQL Server 5.5目录下的include与lib这两个文件拷贝到该文件夹。
(3)MinGW命令模式下(cmd)
Qt配置MySQL可参考:
kuenking111的专栏
(4)设置MySQL数据库驱动
QSqlDatabase connectMysql=QSqlDatabase::addDatabase("QMYSQL");
connectMysql.setHostName("localhost");//主机名
connectMysql.setUserName("tjuwp");//\用户名必须是已经在数据库中的用户
connectMysql.setPassword("tjuwp2016");//登录密码
connectMysql.setDatabaseName("test");//设置数据库名字
bool isOpen=connectMysql.open();
4、访问Access数据库
(1)用户数据源的名称、驱动程序与支持的数据库格式
通过控制面板/系统和安全/管理工具/数据源(ODBC),可以看到用户数据源的名称、驱动程序与支持的数据库格式(Access 2013支持.accdb格式与.mdb格式,比较老的版本仅支持.mdb格式),本机的名称为MS Access Database,驱动程序为Microsoft Access Driver (.mdb, .accdb),这个需要注意,参考网上资料时MS Access,名称不对。
(2)设置Access数据库,QODBC驱动
QSqlDatabase connectAccess = QSqlDatabase::addDatabase ("QODBC");
//两种格式之间必须有空格,否则访问失败
QString str = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access Database};DBQ=D:/Qtcode/CH_sql/mydb1.accdb;");
connectAccess.setDatabaseName (str);
bool isOpen = connectAccess.open ();