【问题标题】:Submitting QSqlRecord to MySQL database in Qt在 Qt 中将 QSqlRecord 提交到 MySQL 数据库
【发布时间】:2009-11-05 16:42:57
【问题描述】:

我想访问一个 MySQL 数据库,并且我想在我的 Qt/C++ 程序中从数据库中读取和写入数据。对于读写过程,我尝试使用 QSqlTableModel、QSqlTableRcord 和 QSqlDatabase,因为这是一种非常愉快的方法,没有太多我不喜欢的 SQL 命令,出于某种原因(处理自己)。 我已经有一个类似的方法已经在运行(所以数据库已经在运行)但是它到处都是混乱的。 所以简单的问题是我在这几行示例代码中做错了什么: 使用 QT 4.5.x 测试数据库有3列:float x、float y、blob img

int main(){
QImage img("./some_image.png");
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("test");
db.setPort(3306);
db.setUserName("root");
db.setPassword("xxxxxxx");
if (!db.open() )
    qDebug("Mising db / unable to open");
else {
    QSqlTableModel model;
    qDebug() << "tables::" <<db.tables(); //so I see the table exists and gets detected
    model.setTable("test_table");

    QSqlRecord rec;
    rec.setValue(0,1.0f);
    rec.setValue(1,2.0f);

    QByteArray ba;
    QBuffer buffer(&ba);
    buffer.open(QIODevice::WriteOnly);
    img.save(&buffer, "PNG");
    rec.setValue(2,ba);

    model.insertRecord(0,rec);
    qDebug() << model.lastError().text();
    if (!model.submitAll())
        qDebug() << "Submit all did not work";
    return 0;
    }

感谢您的帮助,我已经从 Qt 文档的一端跑到另一端,但没有找到解决方案,我已经浪费了 5 个小时,所以我很感谢任何提示(除非你建议这样做完全不同)。

【问题讨论】:

  • 您能否添加更多有关此操作如何失败的信息? model.lasterror().text() 的值是多少?
  • 它是空的,所以我真的一无所知

标签: c++ sql mysql qt


【解决方案1】:

您的 QSqlRecord 没有定义任何字段。你需要添加

rec.append(QSqlField("x", QVariant::Double));
rec.append(QSqlField("y", QVariant::Double));
rec.append(QSqlField("img", QVariant::Image));

在设置值之前

【讨论】:

    【解决方案2】:

    使用你的表生成记录,qt会自动创建表所包含的字段。

    QSqlTableModel table;
    table.setTable("test_table");
    QSqlRecord rcd = table.record();
    rcd.setValue("x",1.0f);
    rcd.setValue("y",2.0f);
    
    QByteArray ba;
    QBuffer buffer(&ba);
    buffer.open(QIODevice::WriteOnly);
    img.save(&buffer, "PNG");
    rcd.setValue("img",ba);
    
    model.insertRecord(-1,rcd);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多