如何从数据库文件中创建 QByteArray
Posted
技术标签:
【中文标题】如何从数据库文件中创建 QByteArray【英文标题】:How to make a QByteArray from a Database file 【发布时间】:2016-09-01 00:42:21 【问题描述】:使用 QT5 中的QByteArray QIODevice::readAll(),我能够从 txt 文件或图像创建字节数组,然后使用解码并正确重新创建文件。但是,当我尝试使用 .db 文件(SQLITE)时,它不起作用。
我注意到,当您使用文本编辑器打开 .db 时,您会看到“SQLite 格式 3”后跟编码字符。从 .db 文件创建 QByteArray,然后 decode() 重新创建文件后,当我用文本编辑器打开它时,文件只包含文本“SQLite 格式 3”。
QByteArray 是否仅适用于 txt 文件或图像文件?
如果是这样,我如何从 .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();
更新2:
关于我在最初的问题中提到的解码,我使用的是以下内容:
QString QFile::decodeName(const QByteArray & localFileName)
当您仔细阅读文档时,这是没有意义的,而且是错误的。 :)
【问题讨论】:
decode()
是什么意思?请展示一个最小的独立示例。这应该很容易,你做错了什么。
不,QByteArray
不在乎里面有什么。
【参考方案1】:
您不应使用 QIODevice::Text 标志打开该文件。
查看http://doc.qt.io/qt-5/qiodevice.html#OpenModeFlag-enum
【讨论】:
以上是关于如何从数据库文件中创建 QByteArray的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中,如何从数据中创建音频文件(.wav、.mp3)文件?
当我们从 s3 中的 csv 文件读取数据并在 aws athena 中创建表时如何跳过标题。
如何从 Blob 中的 CSV 文件在 SQL 数据库中创建一个表,其中包含通过数据流或 ADF 管道的所有列名及其数据类型?