• 6250阅读
  • 8回复

可否使用文件来代替数据库? [复制链接]

上一主题 下一主题
离线yzpdsg
 

只看楼主 倒序阅读 楼主  发表于: 2011-06-27
今天看到了这样两条语句:  
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);
    db.setDatabaseName(“:memory:”);
于是突发奇想,如果想在程序中使用数据,而又不想在本机安装SQL Server,那么可否使用db文件来代替?表的存储,执行SQL语句的效果是一样的么?
离线jdwx

只看该作者 1楼 发表于: 2011-06-27
单文件数据库可以,但是需要数据库驱动。
像Access,sqlite。
access使用方便,但是access兼容SQL语句不太好。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线XChinux

只看该作者 2楼 发表于: 2011-06-27
就使用SQLite就不错的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yzpdsg

只看该作者 3楼 发表于: 2011-06-30
回 1楼(jdwx) 的帖子
那么,使用SQLITE需要用户安装任何与数据库有关的驱动么?
离线XChinux

只看该作者 4楼 发表于: 2011-07-04
SQLite3在Qt中已经自带了,不需要额外加东西的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yzpdsg

只看该作者 5楼 发表于: 2011-07-05
回 4楼(XChinux) 的帖子
使用程序的用户也不需要安装数据库的驱动么?
离线XChinux

只看该作者 6楼 发表于: 2011-07-07
发布时将插件带上就可以了,具体看Qt程序发布方面的内容。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yzpdsg

只看该作者 7楼 发表于: 2011-07-09
回 1楼(jdwx) 的帖子
我尝试了如下语句:

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("D:\\record.db");
    if(!db.open())
        QMessageBox::critical(this,tr("error"),tr("Cannot open database\nSettings will not be saved."),QMessageBox::Ok);
    else
    {
        QSqlQuery query;
        QSqlQueryModel *queryModel;
        queryModel = new QSqlQueryModel(this);
        query.exec("create table watch_directory(directory varchar primary key,status varchar)");
        queryModel->setQuery("insert into watch_directory values('%1','%2')").arg(directory).arg(status);
    }

结果打开时没报错,但是也没看到D盘下生成了record.db文件。莫非是setDatabaseName()中的内容写的不对?
离线yzpdsg

只看该作者 8楼 发表于: 2011-07-10
回 7楼(yzpdsg) 的帖子
哦,我知道了。原来是我的可执行程序没变。可是我明明修改过代码的,编译时总是提示“Noting new to build.”,只能手动删除所有文件重新编译才行(clean也无效)。不知是不是一个bug?
快速回复
限100 字节
 
上一个 下一个