QT中使用SQLite数据库的学习笔记

1、数据库链接

QSqlDatabase
主要有2点要注意:
1、在创建数据库链接之前,要检查一下是否已经存在这个链接,不存在,则创建链接,存在,则使用当前存在的链接!
2、必须要先创建数据库链接,才能打开数据库

QSqlDatabase mydb;
    //判断数据库链接是否存在
    if(QSqlDatabase::contains("qt_sql_default_connection"))
        mydb = QSqlDatabase::database("qt_sql_default_connection");
    else  //不存在 添加新的链接
        mydb = QSqlDatabase::addDatabase("QSQLITE");


    mydb.setDatabaseName(QApplication::applicationDirPath()+"/xingbiao.dat");
    //如果本目录下没有xingbiao.dat数据库,则会在本目录下生成,如果已经存在这个数据库,则直接链接该文件


     if (!mydb.open())  //打开数据库连接,在打开链接之前链接不可用
     {
            qDebug()<<"Database open failed!"<

2、数据库的操作

QSqlQuery
数据库的操作注意2点:
1、对于要操作的数据库中某个表格的内容,必须先判断表格是否存在,如存在,直接操作即可,如不存在,需要在此数据库中添加一个新的表格,才能对其进行操作

QSqlQuery sql_query(mydb);
    //判断xingbiao.dat数据库中是否存在hengxing这个表格
    sql_query.exec(QString("select count(*) from sqlite_master where type='table' and name='hengxing'"));    //关键的判断
    if(sql_query.next())
    {
        if(sql_query.value(0).toInt()==0)
        {
            // 表不存在
            qDebug() << "table does not exist";
            //下面内容用于在数据库xingbiao.dat中创建一个表格hengxing,只需要创建一次,后面就不用再次创建了
            QString create_sql = "create table hengxing (id int , chijingh int,chijingm int,chijings double,"
                                 "chiweid int,chiweim int,chiweis double,shicha double,cjzx double,cwzx double)";
            sql_query.prepare(create_sql);
            if(!sql_query.exec())
            {
                qDebug() << "Error: Fail to create table." << sql_query.lastError();
            }
            else
            {
                qDebug() << "Table created!";
            }
        }else
        {
             //表存在
             qDebug() << "table exists";
        }
    }

2、每次对数据库操作结束之后,都需要关闭数据库链接,以防止下次操作失败!

 //每次数据库操作结束 都需要关闭数据库链接
    mydb.close();

你可能感兴趣的:(QT中使用SQLite数据库的学习笔记)