前言

  sqlite数据库是一个进程内的嵌入式数据库,可以无缝嵌入到的你软件里面 ,区别于mssql mysql等独立进程数据库,所以能用sqlite完成的尽量不要用其他数据库

优势

  不需要配置编译即可使用

  支持千万级别海量数据最好不要超过亿级

命令

  支持标准sql 如insert delete update select drop等

安装

    1首先把sqltecipher源码下载下来,然后编译出release 和debug 版本即可

    2 复制sqlitecipher.dll 和sqlitecipherd.dll到你的qt安装目录下的plugins\sqldrivers即可

    3  main函数 添加以下 代码 qDebug() << QSqlDatabase::drivers(); 如果出现sqlitecipher 字符说明驱动安装成功

 

创建数据库

 

sqlite studio创建一个db

 

 

 加密

 QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    //QSqlDatabase dbconn = QSqlDatabase::addDatabase("QSQLITE");

    dbconn.setDatabaseName(QCoreApplication::applicationDirPath()+"/test.db");
    dbconn.setPassword("root");
    dbconn.setConnectOptions("QSQLITE_USE_CIPHER=aes256cbc; QSQLITE_ENABLE_REGEXP");

    if (!dbconn.open()) {
        qDebug() << "Can not open connection: " << dbconn.lastError().driverText();
        return CONNECTION_FAILED;
    }
测试加密是否成功
 

 

 ;打开studio创建student表

 ; 键入以下代码查询student表

QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    dbconn.setDatabaseName(DB_FILE_PATH);
    dbconn.setPassword("root");
    dbconn.setConnectOptions("QSQLITE_USE_CIPHER=sqlcipher; QSQLITE_ENABLE_REGEXP");
    if ( !dbconn.open()){
        qDebug() << "Can not open connection: " << dbconn.lastError().driverText();
        return CONNECTION_FAILED;
    }
    QSqlQuery query;
    query.exec("select * from student");
    while(query.next()){
        static int i=1;
        int ele0=query.value(0).toInt();
        QString ele1=query.value(1).toString();
        qDebug()<<i++<<":"<<ele0<<"|"<<ele1;
    }
    dbconn.close();
;查询结果
  

 

 ;相关函数

  


//修改数据库密码
void updatePassword()
{

QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
dbconn.setDatabaseName(DB_FILE_PATH);
dbconn.setPassword("root");
dbconn.setConnectOptions("QSQLITE_UPDATE_KEY=root");
if (!dbconn.open()) {
qDebug() << "Can not open connection: " << dbconn.lastError().driverText();
exit(CONNECTION_FAILED);
}
}

//删除数据库密码
void removePassword()
{
QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
dbconn.setDatabaseName(DB_FILE_PATH);
dbconn.setPassword("root");
dbconn.setConnectOptions("QSQLITE_REMOVE_KEY");
if (!dbconn.open()) {
qDebug() << "Can not open connection: " << dbconn.lastError().driverText();
exit(CONNECTION_FAILED);
}
dbconn.close();
}

参考
https://www.cnblogs.com/l199616j/p/10694036.html
  https://github.com/pawelsalawa/sqlitestudio/releases
  https://www.sqlite.org/download.html
  

posted on 2016-12-17 20:39  jk0011  阅读(68)  评论(0编辑  收藏  举报