Qt 使用数据库SQLite、SQL Server

在使用数据库时,需要查看安装的QT中支持的驱动列表。一般可以在QT安装目录中的plugins/sqldrivers文件夹中查看所有的驱动插件文件。

本文重点不在此,故不再细述。

在xxx.pro工程文件中需要添加如下:

QT       += sql

连接SQLite数据库:

该数据库为轻量级数据库,使用方便。代码如下:

 1 #include 
 2 #include 
 3 #include 
 4 #include 
 5  
 6 static bool createConnection()
 7 {
 8     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
 9     db.setDatabaseName("my.db");
10     if (!db.open()) {
11         QMessageBox::critical(0, "Cannot open database1",
12                               "Unable to establish a database connection.", QMessageBox::Cancel);
13         return false;
14     }
15     QSqlQuery query;
16     // 创建登录用户表
17     query.exec("create table user (username varchar primary key, passwd varchar)");
18     query.exec("insert into user values('admin', 'root')");return true;
19 }

编译之后,会在目录下生成一个my.db的数据库文件。数据库中有一个名为user的表。

如果要同时对两个不同的数据库文件进行操作,则:

 1 #include 
 2 #include 
 3 #include 
 4  
 5 static bool createConnection()
 6 {
 7     // 创建一个数据库连接,使用“connection1”为连接名
 8     QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE", "connection1");
 9     db1.setDatabaseName("my1.db");
10     if (!db1.open()) {
11         QMessageBox::critical(0, "Cannot open database1",
12                               "Unable to establish a database connection.", QMessageBox::Cancel);
13         return false;
14     }
15  
16     // 这里要指定连接
17     QSqlQuery query1(db1);
18     query1.exec("create table student (id int primary key, "
19                 "name varchar(20))");
20     query1.exec("insert into student values(0, 'LiMing')");
21     query1.exec("insert into student values(1, 'LiuTao')");
22     query1.exec("insert into student values(2, 'WangHong')");
23  
24     // 创建另一个数据库连接,要使用不同的连接名,这里是“connection2”
25     QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE", "connection2");
26     db2.setDatabaseName("my2.db");
27     if (!db2.open()) {
28         QMessageBox::critical(0, "Cannot open database1",
29                               "Unable to establish a database connection.", QMessageBox::Cancel);
30         return false;
31     }
32  
33     // 这里要指定连接
34     QSqlQuery query2(db2);
35     query2.exec("create table student (id int primary key, "
36                 "name varchar(20))");
37     query2.exec("insert into student values(10, 'LiQiang')");
38     query2.exec("insert into student values(11, 'MaLiang')");
39     query2.exec("insert into student values(12, 'ZhangBin')");
40     return true;
41 }

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

连接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数据源Qt 使用数据库SQLite、SQL Server_第1张图片

 然后添加Qt 使用数据库SQLite、SQL Server_第2张图片Qt 使用数据库SQLite、SQL Server_第3张图片

 Qt 使用数据库SQLite、SQL Server_第4张图片

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

 Qt 使用数据库SQLite、SQL Server_第5张图片

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

Qt 使用数据库SQLite、SQL Server_第6张图片

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

Qt 使用数据库SQLite、SQL Server_第7张图片

 Qt 使用数据库SQLite、SQL Server_第8张图片

 至此为止,QTDSN已经配置完成。

然后在QT中进行如下配置:

1 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
2     QString dsn = QString::fromLocal8Bit("QTDSN");
3     db.setHostName("127.0.0.1");
4     db.setDatabaseName(dsn);
5     db.setUserName("sa");
6     db.setPassword("123456");

这样便链接完成

 1 #include 
 2 #include 
 3 #include 
 4 #include 
 5  
 6 static bool createConnection()
 7 {
 8     
 9     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
10     QString dsn = QString::fromLocal8Bit("QTDSN");
11     db.setHostName("127.0.0.1");
12     db.setDatabaseName(dsn);
13     db.setUserName("sa");
14     db.setPassword("123456");
15     if (!db.open()) {
16         QMessageBox::critical(0, "Cannot open database1",
17                               "Unable to establish a database connection.", QMessageBox::Cancel);
18         return false;
19     }
20     QSqlQuery query;
21     // 创建登录用户表
22     query.exec("select * from  user");
23     while(query.next()){
24     qDebug()<

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

你可能感兴趣的:(QT开发,数据库,sqlite,qt开发,qt教程,SQL,Server)