QT学习5:数据库,sqlite相关

本文介绍了如何在Qt5中使用QSqlite驱动操作SQLite数据库,包括创建数据库连接、设置数据库名称、尝试连接数据库以及创建表等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.qt5已经内带了 QSqlite 驱动 和 sqlite数据库,非常方便,

使用数据库QSqlDatabase类进行数据库相关的编程时,要在.pro里面 += sql

其他的废话不说,上代码 ( 数据库是工程目录下自己创建的一个stock.db文件 )

void MainWindow::initDataBase()
{
    QSqlDatabase db;
 
    //创建数据库实例(即创建数据库连接)
    //addDatabase() 第一个参数为要装载的驱动,这里使用qt自带的qsqlite
    //第二个参数"connectDB_1" 为自定义的数据库连接名,不是数据库名 )
    db = QSqlDatabase::addDatabase("QSQLITE", "connectDB_1");
 
    //选择要使用的数据库名字   即工程目录下的stock.db
    //因为连接的是本地sqlite数据库,所以  主机,用户名,密码不需要配置
    db.setDatabaseName("stock.db");
    //    db.setHostName("host");
    //    db.setDatabaseName("dbname");
    //    db.setUserName("username");
    //    db.setPassword("password");
 
 
 
    //尝试连接数据库
    if (!db.open()) {
        outQString("无法打开数据库,错误为:" + db.lastError().text() );
    }
    else {
        outQString("数据库已成功打开");
        qDebug()<<"数据库含表:"<< db.tables();  //输出数据库里面的表
 
        //QSL语句,参数里要填入一个数据库实例,而且一定要在 db.open()以后定义,
        //之前报了一个out of memory Unable to execute statement 就是因为在db.open()前就定义了
        QSqlQuery query( db )  ;
 
        //如果表table_1不存在  则创建
        if( ! db.tables().contains("table_1") ) {
           bool correct =  query.exec(" create table table_1 ("
                            " sid  INTEGER PRIMARY KEY AUTOINCREMENT ,"
                            " scode varchar not null ,"
                            " sname varchar not null "
                            ")  ");
 
           if(!correct ) outQString("建表语句执行错误:" + query.lastError().text() );
           else
               outQString("建表table_1 成功");
        }
        else outQString("表table_1已存在");
 
    }



2.   QSqlQuery query;    一定要在 db.open()以后定义

之前报了一个out of memory Unable to execute statement 就是因为在QSqlDatabase的 db.open()前就定义了



资料参考:

Qt 学习之路 2(55):数据库操作   http://www.devbean.net/2013/06/qt-study-road-2-database/

Qt, QSqlDatabase类详细介绍     http://hi.baidu.com/ageeker/item/40059c0237697ed21ff046f1


最后再暴贴51cto的

详解讲解 Qt SQLite 3入门教程

详解Qt 中如何提高Sqlite读写速度

解决QT 中Sqlite数据库添加加密功能

Qt数据库操作 连接SQLite和MySQL数据库实例

浅谈Qt Sqlite (总结篇)

详解Qt 利用Sqlite静态编译库 (Linux 篇)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值