在使用数据库时,需要查看安装的QT中支持的驱动列表。一般可以在QT安装目录中的plugins/sqldrivers文件夹中查看所有的驱动插件文件。
本文重点不在此,故不再细述。
在xxx.pro工程文件中需要添加如下:
QT += sql
连接SQLite数据库:
该数据库为轻量级数据库,使用方便。代码如下:
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("my.db");
if (!db.open()) {
QMessageBox::critical(0, "Cannot open database1",
"Unable to establish a database connection.", QMessageBox::Cancel);
return false;
}
QSqlQuery query;
// 创建登录用户表
query.exec("create table user (username varchar primary key, passwd varchar)");
query.exec("insert into user values('admin', 'root')");return true;
}
编译之后,会在目录下生成一个my.db的数据库文件。数据库中有一个名为user的表。
如果要同时对两个不同的数据库文件进行操作,则:
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
static bool createConnection()
{
// 创建一个数据库连接,使用“connection1”为连接名
QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE", "connection1");
db1.setDatabaseName("my1.db");
if (!db1.open()) {
QMessageBox::critical(0, "Cannot open database1",
"Unable to establish a database connection.", QMessageBox::Cancel);
return false;
}
// 这里要指定连接
QSqlQuery query1(db1);
query1.exec("create table student (id int primary key, "
"name varchar(20))");
query1.exec("insert into student values(0, 'LiMing')");
query1.exec("insert into student values(1, 'LiuTao')");
query1.exec("insert into student values(2, 'WangHong')");
// 创建另一个数据库连接,要使用不同的连接名,这里是“connection2”
QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE", "connection2");
db2.setDatabaseName("my2.db");
if (!db2.open()) {
QMessageBox::critical(0, "Cannot open database1",
"Unable to establish a database connection.", QMessageBox::Cancel);
return false;
}
// 这里要指定连接
QSqlQuery query2(db2);
query2.exec("create table student (id int primary key, "
"name varchar(20))");
query2.exec("insert into student values(10, 'LiQiang')");
query2.exec("insert into student values(11, 'MaLiang')");
query2.exec("insert into student values(12, 'ZhangBin')");
return true;
}
连接SQL Server数据库:
部分摘自
点击打开链接
前提工作:
安装了SQL Server 2008,并在SQL Server中创建了数据库MyDB
Qt通过ODBC连接SQL Server 2008概述:
Qt通过ODBC连接数据库时,使用的数据库名不是直接写入数据库名称,而是DSN名。
DSN名的使用方式有两种:
1、在操作系统中配置DSN;
2、在Qt程序代码中采用DSN连接字符串直接连接ODBC数据库。
下面详细介绍在操作系统中配置DSN方式下连接SQL Server 2008的操作过程
在操作系统中配置DSN
进入管理工具中选择ODBC数据源

其中在最后连接哪一个SQLServer服务器,如果已经在SQLServer2008中已经配置完成,则会出现要选择服务器。

这里的登录ID和密码是同在SQLServer2008中配置的一样。

如果已经建立好数据库,这里会出现要待选的数据库。



至此为止,QTDSN已经配置完成。
然后在QT中进行如下配置:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString dsn = QString::fromLocal8Bit("QTDSN");
db.setHostName("127.0.0.1");
db.setDatabaseName(dsn);
db.setUserName("sa");
db.setPassword("123456");
这样便链接完成
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString dsn = QString::fromLocal8Bit("QTDSN");
db.setHostName("127.0.0.1");
db.setDatabaseName(dsn);
db.setUserName("sa");
db.setPassword("123456");
if (!db.open()) {
QMessageBox::critical(0, "Cannot open database1",
"Unable to establish a database connection.", QMessageBox::Cancel);
return false;
}
QSqlQuery query;
// 创建登录用户表
query.exec("select * from user");
while(query.next()){
qDebug()<<query.value(0).toString();
qDebug()<<query.value(1).toString();
}return true;
}