QT数据库操作
时间:2021-07-01 10:21:17
帮助过:17人阅读
库
- 包含以下类:
- QSqlDatabase 类用于新建数据库
- QSqlQuery用来来执行sql语句,如QSqlQuery
query;query.exec("create table student(ID int primary key,name varchar(20)");
需要在.pro文件底部加上 QT +=sql 一句
Qt支持的数据库类型:
显示可用数据库驱动:
-
qDebug()<<"avalible
sql drivers:";
QStringList
drivers=QSqlDatabase::drivers();
foreach(QString
driver,drivers)
{
qDebug()<<"/t"<<driver;
}
return a.exec();
- linux系统下查看QT支持的数据库
- 进入此目录:pyd@ubuntu:/usr/local/Trolltech/Qt-4.6.3/plugins/sqldrivers$
- pyd@ubuntu:/usr/local/Trolltech/Qt-4.6.3/plugins/sqldrivers$
ls
libqsqlite.so libqsqlite.so.debug libqsqlmysql.so
- ldd .so文件,查看是否有not found
Qt中使用sqlite
- #include <QtCore/QCoreApplication>
- #include <QtSql>
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- QSqlDatabase db =
QSqlDatabase::addDatabase(“QSQLITE”); //添加数据库驱动
- db.setDatabaseName(“:memory:”);
//数据库连接命名
- if(!db.open()) //打开数据库
- {
- return fals
e;
- }
- QSqlQuery query; // 以下执行相关QSL
语句
- query.exec(“create table student(id int
primary key,name varchar)”);
- //新建student 表,id设置为主键,还有一个name项
- query.exec(“insert into student
values(1,’xiaogang’)”);
- query.exec(“insert into student values(2
,’xiaoming’)”);
- query.exec(“insert into student
values(3,’xiaohong’)”);
- //向表中插入3 条记录
- query.exec(“select id,name from student where
id >= 2″);
- //查找表中id >=2
的记录的id项和name项的值
- while(query.next())
//query.next()指向查找到的第一条记录,然后每次后移一
- 条记录
- {
- int ele0 =
query.value(0).toInt();
//query.value(0)是id的值,将其
- 转换为int 型
- QString ele1
=query.value(1).toString();
- qDebug() << ele0
<<ele1 ; //输出两个值
- }
-
- return a.exec();
- }
- 我们使用了SQLite数据库,连接名为“:memory:”表示这是建立在内存中的数据库,也就是
- 说该数据库只在程序运行期间有效。如果需要保存该数据库文件,我们可以将它更改为实际的
- 文件路径
- 示例:
Qt中使用其他数据库
- QT需要手动编译其他数据库的驱动代码,以插件的形式使用它们。
- 在QT帮助文档里搜索SQL Database drivers可以看到每种驱动的方法
sqlite数据库
- sqlite是一款轻量级的数据库,经常被用在嵌入式,免费的Qt自带sqlite的驱动
- 在本地生成数据库,没有用户与密码设置
- linux下sqlite的安装:
- sudo apt-get install sqlite3
- linux下sqlite的使用:
- sqlite在当前目录下生成、打开数据库文件
- 命令行里输入“sqlite3 1.db”,如果1.db文件存在则会打开,不存在则创建,实际似乎在.database后创建
- .database
- .tables
- .quit .exit
QT中使用myssql
- setDatabaseName("test");//不能指定目录,不能加.db
- //连接数据库
- QSqlDatabase db =
QSqlDatabase::addDatabase("QMYSQL");//选择数据库类型
- db.setDatabaseName("ods1");//设置数据库名称
- if(isSqlConnected)
- {
- }
- else
- {
-
db.setHostName(ui->hostNameLineEdit->text());
-
db.setUserName(ui->userNameLineEdit->text());
-
db.setPort(ui->sqlPortLineEdit->text().toInt());
-
db.setPassword(ui->passwdLineEdit->text());
- qDebug("set completed");
-
qDebug()<<ui->hostNameLineEdit->text()<<ui->userNameLineEdit->text()<<ui->sqlPortLineEdit->text().toInt()<<ui->passwdLineEdit->text();
- }
- if(db.open())//open! not isopen() !!!
- {
- qDebug("sql connected");
- isSqlConnected = true;
- }
- else
- {
- qDebug("not connected");
- }
注意事项
- QSqlTableModel 和 QSqlQuery 等与数据库相关的类必须在数据库连接后建立才有效
来自为知笔记(Wiz)
QT数据库操作
标签: