如何从数据库文件中创建QByteArray

时间:2016-09-01 00:42:21

标签: c++ qt sqlite bytearray qt5

使用QT5中的QByteArray QIODevice::readAll(),我能够从txt文件或图像中创建一个字节数组,然后使用解码并正确地重新创建文件。但是,当我尝试使用.db文件(SQLITE)时,它无效。

我注意到当您使用文本编辑器打开.db时,您会看到“SQLite格式3”,后跟编码字符。从.db文件创建QByteArray之后,然后使用decode()重新创建文件,当我使用文本编辑器打开它时,该文件只包含文本“SQLite format 3”。

QByteArray仅适用于txt文件或Image文件吗?

如果是,我如何从.db(SQLITE)文件中创建一个字节数组。

由于

Update1(以下代码有效):

QFile file("C:/database.db");
if(!file.open(QIODevice::ReadOnly))
    qDebug()<<"You are stupid!";

QByteArray byteArray = file.readAll();

QFile file2("C:/database2.db");
file2.open(QIODevice::WriteOnly);
file2.write(byteArray);

file2.close();
file.close();

UPDATE2:

关于我在初始问题中提到的解码,我使用了以下内容:

QString QFile::decodeName(const QByteArray & localFileName)

当你仔细阅读文档时没有任何意义,这是错误的。 :)

1 个答案:

答案 0 :(得分:1)

您不应该使用QIODevice :: Text标志打开该文件。

选中此http://doc.qt.io/qt-5/qiodevice.html#OpenModeFlag-enum