用事务功能一次性insert到harm表50条数据,其中
时间和数组的index为联合主键,如 09:20:45 和1,09:20:45 和2,……09:20:45 和50,
执行错误时用
对话框弹出sql语句字符串
   db.transaction ();//db是一个已定义的QDatabase对象
   QSqlQuery query;
    QString sql_harm = QString("insert into harm values('" + now.toString(Qt::LocaleDate) + "',");   
 /* 已定义的QDateTime  对象,now.currentDateTime ();*/       for(int s = 0; s < 50; s++)
    {
        QString sql = QString("%1, %2, %3)");
        sql =sql.arg(s + 1);
        sql =sql.arg(*(arry_U+s)); //arry_U arry_I是50维数组
        sql =sql.arg(*(arry_I+s));        
        sql =sql_harm + sql;        
if(!query.exec(sql))           {            
QMessageBox msgBox;
            msgBox.setDetailedText (sql) ;
            msgBox.exec();
         }
    }
    db.commit();
令人糊涂的是,注意红色语句,无论
if(!query.exec(sql)还是
if(query.exec(sql),都会弹出对话框。
更纳闷的是,if(!query.exec(sql)会弹出50个对话框,好似50个添加都错误,但我用显示的时间来select时,如:    
QString mm("select * from harm where datetime = '2008-12-1 9:48:29'");
query.exec(mm);     
while(query.next())
      ii++;   结果i = 50,证明添加是完全成功。
反过来用if(query.exec(sql)  ,还是有对话框弹出,而且还不止50个,反复出现,远大于50。估计应该是会出现50次重复出现,供2500个。好像是添加错误,自动重新执行了。
再select得到记录为 0条有两点糊涂: 1,同样的数据,怎
么if(!query.exec(sql)和if(query.exec(sql)都有对话框弹出??[/color]而且返回false的,添加数据是正常的,ture反而是失败的???
2,用if(query.exec(sql)时,对话框远远>50个,QSqlQuery 好像自动rollback了(绝对没有人为写rollback或重复执行的代码),重复执行了,糊涂!!
望得到帮助和提示,先谢谢![ 此贴被xiaochunz在2008-12-01 21:09重新编辑 ]