实现用qt打开多个数据库

1.需求

原来保存数据使用的是sqlite的内存数据库,后来需要将配置信息等也保存到数据库,程序配置后关闭打开要能显示正常显示保存的配置信息

2.解决

1.将配置信息写入到普通的配置文件(ini等),第一个版本这样实现,缺点读写文件有点慢

2.程序中采用两种数据库,内存数据库和文件数据库,将敏感信息存放到内存数据库,将用户配置信息等存放到文件数据库,进行长期保存

3.部分代码

1.创建内存数据库

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "memory");
db.setDatabaseName(":memory:");
if (!db.open()) {
        LOG_ALL_ERROR(QStringLiteral("failed open sqlite."));
        return bret;
}

2.创建文件数据库

QString strdbpath("");
strdbpath = QCoreApplication::applicationDirPath();
strdbpath += "/db";
QDir dir("");
dir.mkpath(strdbpath);
strdbpath += "/mysqlite.db";
QSqlDatabase dbset = QSqlDatabase::addDatabase("QSQLITE", "file");
dbset.setDatabaseName(strdbpath);
if (!dbset.open()) {
    LOG_ALL_ERROR(QStringLiteral("failed open mysqlite.db"));
    return bret;
}

3.使用内存数据库

QSqlQuery query(QSqlDatabase::database("memory", true));
bret = query.exec("create table backlist(no varchar(100), "
                  "name varchar(200),color varchar(100), "
                  "size varchar(100), retail double, "
                  "discount double, unit double, "
                  "attrid varchar(33), salenum int, "
                  "backmax int, backnum int, totalprice double, "
                  "serial varchar(100), orderid varchar(33), "
                  "date varchar(100))");

4.使用文件数据库

QSqlQuery setquery(QSqlDatabase::database("file", true));
bret = setquery.exec("create table printset(btitle INTEGER,bshop INTEGER,bbarcode INTEGER, "
    "bsellid INTEGER,bcashdesk INTEGER,bcashier INTEGER, "
    "bdate INTEGER,bmemid INTEGER,bscore INTEGER, "
    "bpayable INTEGER,bprivilege INTEGER,btotal INTEGER, "
    "bgoodname INTEGER,bgoodcount INTEGER,bunit INTEGER, "
    "bsum INTEGER,bdiscount INTEGER,bprice INTEGER, "
    "bcash INTEGER,bbank INTEGER,bchange INTEGER, "
    "btel INTEGER,bend INTEGER)");

4.参考

1.http://blog.csdn.net/abeldeng/article/details/24767245这篇文章讲述了创建没说使用

2.qt助手

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 03:04:07

实现用qt打开多个数据库的相关文章

SQL Server 2014 无法打开用户默认数据库 登录失败错误4064的解决方法

SQL Server 2014 无法打开用户默认数据库 登录失败错误4064的解决方法 晚上干了件蠢事,删除了管理员账户的默认数据库,紧接着就出现了标题里面的报错. 解决办法如下: 第一步:打开命令控制台 Win+R打开运行,输入CMD 第二步:复制粘贴如下命令 sqlcmd -E -d"master" -Q"exec sp_defaultdb N'PC\Admin', N'master'" 注意:把上条命令PC\Admin改成自己实际的账户,使用BackSlash

Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)

下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this);     QFileInfo fileinfo(appUrl);     QString appPath = QApplication::applicationDirPath()+SAVEDIR+"/"+fileinfo.fileName();     bool res = proce

QT打开网页 QURL

用QT打开一个网页就是先定义一个QUrl对象url,然后利用QDesktopServices::open(url)即可. 例如: const QUrl url(http://www.baidu.com); qDebug() << url.scheme(); qDebug() << url.port(); QDesktopServices::openUrl(url);

QT 打开文件对话框总结

Qstring fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ",  tr("Allfile(*.*);;mp3file(*.mp3)")); 说明:这样就会产生一个对话框,和系统的资源管理器差不多的.返回的是你选择文件的 绝对路径. 参数1:父窗口 参数2:对话框的标题 参数3:默认的打开的位置,如"我的文档"等 参数4:文件的过滤器,注意文

Qt打开外部程序和文件夹需要注意的细节(注意QProcess的空格问题,以及打开本地文件时,需要QUrl::fromLocalFile才可以)

下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this);     QFileInfo fileinfo(appUrl);     QString appPath = QApplication::applicationDirPath()+SAVEDIR+"/"+fileinfo.fileName();     bool res = proce

Qt 打开安卓相册选择图片并获取图片的本地路径

Qt 打开安卓相册选择图片并获取图片的本地路径 步骤如下: 通过 Intent 打开安卓的系统相册. 推荐使用 QAndroidJniObject::getStaticObjectField 获取静态字段. QAndroidJniObject action = QAndroidJniObject::getStaticObjectField( "android/content/Intent", "ACTION_GET_CONTENT", "Ljava/lan

Qt打开外部程序的三种方法(两种阻塞,一种不阻塞)

Qt打开外部程序 [cpp] view plaincopy //1.通过调用系统函数 system("opt/myApp"); //这是linux下的,windows下可以用WinExec等函数 //2.通过QProcess,阻塞调用 QProcess::execute("/opt/myApp"); //绝对路径和相对路径都可以,windows下要带exe后缀,系统应用如记事本notepad可直接输入打开 //3.通过QProcess,非阻塞调用 QProcess 

Qt打开文件对话框

项目中需要打开文件对话框,就查了一下,不得不说Qt的帮助文档做的真好,非常详细.要实现这个功能有两种方式,使用QFileDialog的静态方法,实例化QFileDialog对象. 基本算是照抄帮助文档了.下面是自己的代码. 1 // 单击文件按钮 2 void FirstDialog::on_pushButtonFile_clicked() 3 { 4 QString strFile = QFileDialog::getOpenFileName( 5 this, 6 tr("打开文件"

Qt之编译MySQL数据库驱动(MSVC)

Qt之编译MySQL数据库驱动(MSVC)   (2013-12-13 20:24:46) 转载▼ 标签:  qt  mysql  qmysql  qt编译mysql  qt之msvc编译mysql 分类: Qt 在Qt之操作数据库(SQLite)中已经介绍了关于Qt如何操作数据库的问题.由于授权的许可限制,Qt的开源版本无法提供所有的驱动程序,当配置Qt时,即可以选择Qt本身包含的SQL驱动程序. 注:Qt5.2以前的版本,提供的数据库包括:ODBC.SQLite.PSQL,其它没有提供的需要