• 8704阅读
  • 4回复

sqlite 加了密码。用Qt怎么链接? [复制链接]

上一主题 下一主题
离线chongxu
 
只看楼主 正序阅读 楼主  发表于: 2009-09-02
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
如题,为了安全。把sqlite 加了密码,但是却不知道写程序的时候如何配置密码才能访问。有这样做过的吗?告诉下程序的写法,谢谢啊
在线hehui

只看该作者 4楼 发表于: 2011-04-09
要改Qt的SQLIte的代码,官方的不支持加密~
楼主看看源码就知道了~
离线channon
只看该作者 3楼 发表于: 2010-08-14
楼上的大虾,我在编译qsqlite4.dll的时候报error: `sqlite3_key' was not declared in this scope错误。

sqlite3.h位置正确,sqlite3.lib位置正确
操作系统: Archlinux
Qt SDK: Qt 4.7.1 for Linux
开发方向: Qt,Java
常用数据库:Firebird、SQLite
在线hehui

只看该作者 2楼 发表于: 2009-09-17
楼主可做一个更通用些的方法出来~

"PASSWORD"取参数里的password~
在线hehui

只看该作者 1楼 发表于: 2009-09-17
要改驱动程序才行的~

参考http://blog.csdn.net/babafall/archive/2009/02/04/3862342.aspx

修改qsql_sqlite.cpp的open(....)函数:
bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, const QString &, int, const QString &conOpts)
{
    if (isOpen())
        close();

    if (db.isEmpty())
        return false;

    if (sqlite3_open16(db.constData(), &d->access) == SQLITE_OK) {
        sqlite3_busy_timeout(d->access, qGetSqliteTimeout(conOpts));
        setOpen(true);
        setOpenError(false);
        sqlite3_key( d->access, "PASSWORD", 8);
        return true;
    } else {
        setLastError(qMakeError(d->access, tr("Error opening database"),
                     QSqlError::ConnectionError));
        setOpenError(true);
        return false;
    }
}

红色的是加上去的~,"PASSWORD" 为密码! 8为长度!
快速回复
限100 字节
 
上一个 下一个