c++ - Qt 从 Microsoft Access 插入和检索图像文件

标签 c++ qt ms-access

所以我有一个图像文件,我想用 OLE 对象数据类型将其存储在 Microsoft Access 数据库中。来自 http://snipplr.com/view/40559/a-pratical-example-of-how-write-and-read-images-into-mysql-tablesusing-trolltech-qt4c/ 的示例

使用 Qt,我设法将图像作为二进制文件存储到 Microsoft Access 数据库中。

void insertdb()
{
    QByteArray arr;
    QFile f("C:\\Users\\cerf\\Downloads\\1.jpeg");
    if (f.open(QIODevice::ReadOnly))
    {
        arr = f.readAll();
        f.close();
    }

    QSqlDatabase::database().transaction();
    Database db; /*this is from the database class*/
    db.connect("D:\\Safebox.mdb");
    QSqlQuery *q = new QSqlQuery(db.getDatabase());
    q->prepare("INSERT INTO Table1 (image) VALUES (:image);");
    q->bindValue(":image", arr);
    q->exec();
    if (q->lastError().isValid()) 
    {
        qDebug() << q->lastError().text();
        QSqlDatabase::database().rollback();
    }
    else
        QSqlDatabase::database().commit();

    delete q;

}

这是 MS Access image 中显示的数据

但是当我尝试使用以下代码段再次检索图像时

void retrieve()
{
    QSqlDatabase::database().transaction();
    Database db;
    db.connect("D:\\Safebox.mdb");
    QSqlQuery *q = new QSqlQuery(db.getDatabase());
    q->prepare("SELECT ID, image FROM Table1 WHERE ID=:id");
    q->bindValue(":id", 21);
    q->exec();
    q->next();
    QByteArray ba1 = q->value(1).toByteArray();
    QPixmap pic;
    if (!pic.loadFromData(ba1))
        qDebug() << "load data fail";

    ui.label->setPixmap(pic);
    QSqlDatabase::database().commit();
    delete q;
}

qdebug 显示加载数据失败,知道吗?

最佳答案

找到解决方案。代码确实有效,只是我的图像文件已损坏。

关于c++ - Qt 从 Microsoft Access 插入和检索图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817265/

相关文章:

c++ - 命名执行多个操作的方法

python - 如果我使用 QT For Windows,我的应用程序会在 Linux/Mac/Windows 上运行良好吗?

oracle - 如何提高 Access 中 ODBC 链接表的批量插入性能?

database - 使用 C# 和 MS Access Oledb 在 Windows 窗体中将表从一个数据库复制到另一个数据库

c++ - CMake添加目标以调用clang分析器

c++ - POST HTTP 请求以使用 Java 脚本和 C++ 使用用户名和密码登录

c++ - 我可以为 operator<< 模板运算符重载吗

c++ - 将 QFile 内容复制到另一个 QFile,最佳方法是什么?

c++ - Qt 有资源系统限制吗?

excel - 如何使用在 Access 表单上创建/输入的动态路径导入 Excel 数据