现在的位置: 首页 > 综合 > 正文

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

2018年04月18日 ⁄ 综合 ⁄ 共 1508字 ⁄ 字号 评论关闭

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 篇)

抱歉!评论已关闭.