• 3303阅读
  • 1回复

请教一个关于数据库的问题 [复制链接]

上一主题 下一主题
离线liumingguang
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-24
   我用的是sqlite数据库,用来存储设备故障信息的,用一个16位整数表示十六种故障,每个位置1表示对应的故障出现。设备通过串口将信息发到我的qt程序,假设来了3种故障,即16位整数有3位置1,我将16位整数解析,再按一定的格式连续3次存入数据库,这会出现只有第一次存进去了。 这可能是第一次还没存完,就接着存第二次的缘故吧。请问各位如何解决这个问题。
离线liumingguang
只看该作者 1楼 发表于: 2009-12-24
程序如下:if(Units::receivebuf[24]&(1<<0))
          {
           computerboard_fault=tr("故障");
           mytype=tr("微机板故障");
           monitor_lm->equipalarmandfault->addnewitem(addr_equipment,name_equipment,mytype);
           }

       else
       {
           computerboard_fault=tr("正常");
       }
       if(Units::receivebuf[24]&(1<<1))
           {
           externalfault_alarm=tr("报警");
           mytype=tr("外部故障报警");
           monitor_lm->equipalarmandfault->addnewitem(addr_equipment,name_equipment,mytype);
           }

       else
       {
           externalfault_alarm=tr("正常");
       }
       if(Units::receivebuf[24]&(1<<2))
           {
      
           externalfault_stop=tr("故障");
           mytype=tr("外部故障停机");
           monitor_lm->equipalarmandfault->addnewitem(addr_equipment,name_equipment,mytype);

          }
       else
           externalfault_stop=tr("正常");

下面的是addnewitem(addr_equipment,name_equipment,mytype);子函数

query.prepare("INSERT INTO messageofalarm_fault (datetime,name,addr,type,explain1,explain2)"
                                            "VALUES (:datetime ,:name, :addr, :type,:explain1,:explain2)");
    query.bindValue(":datetime",QDateTime::currentDateTime().toString(QObject::tr("yyyy年MM月dd日hh:mm:ss")));
    query.bindValue(":name",myname);
    query.bindValue(":addr",myaddr);
    query.bindValue(":type",type);
    query.bindValue(":explain1",tr("备用"));
    query.bindValue(":explain2",tr("备用"));
    if(!query.exec())
    {

        //QMessageBox::information(this,tr("数据库操作失败!"),tr("%1").arg(query.lastError().text()));
        qDebug("error4!");
    }
    QSqlDatabase::database().commit();
    query.finish();
快速回复
限100 字节
 
上一个 下一个