realfan |
2016-12-06 12:50 |
大幅提高易用性,自用的数据库访问封装类(20161208更新)
旧版本链接:http://www.qtcn.org/bbs/read-htm-tid-56334.html 本次更新: getFieldsValueFromRec改为readFieldsValueFromRec,并提高readFieldsValueFromRec,addFieldsValueToTbl,updateTblFieldsValue的易用性,不再需要指定每个字段的参数类型,代码根据传入参数,自动判断类型,传出值,也不用再传指针,相应的使用方法,也有变更: 旧版本: int iSN; QString strName; double dHeight; QDateTime dt; QByteArray ba; db.getFieldsValueFromRec(5, //记录集id "sn%d", &iSN, //字段名加类型 sn为字段名%d表示整型,&iSN传入指针,保存返回字段值 "name%s", &strName, //字段名加类型 name为字段名%s表示字符串(QString) "height&f", &dHeight, //字段名加类型 height为字段名%f表示小数(double) "birthday%t", &dt, //字段名加类型 birthday为字段名%t表示时间(QDateTime) "photo%b", &ba, //字段名加类型 photo为字段名%b表示二进制流(QByteArray) CDBProcess::szEnd); //结束标志,"|" 执行后,各字段值就保存在iSN, strName等变量中了。 新版本, 不再用recordset id,打开记录集返回一个void*指针,这个指针作标识: CDBProcess db; db.openDB("mytest.db"); void * pQry = db.openRecordsetBySql("select * from tb1"); while(db.moveNext(pQry)) { db.readFieldsValueFromRec("sn", iSN, //int "name", strName, //QString "height", dHeight, //double "birthday", dt, //QDateTime "photo", ba); //QByteArray } db.closeRecordset(pQry); 旧版本: db.addFieldsValueToTbl("TB1", //表名 "sn%d", iSN, //字段名加类型 sn为字段名%d表示整型,iSN传入值 "name%s", &strName, //字段名加类型 name为字段名%s表示字符串(QString), 传入QString变量指针 "height%f", dHeight, //字段名加类型 height为字段名%f表示小数(double),dHeight传入值 "birthday%t", &dt, //字段名加类型 birthday为字段名%t表示时间(QDateTime),传入指针 "photo%b", &ba, //字段名加类型 photo为字段名%b表示二进制流(QByteArray),传入指针 CDBProcess::szEnd); //结束标志,"|" 新版本 db.addFieldsValueToTbl("TB1", //表名 "sn", iSN, "name", strName, "height", dHeight, "birthday", dt, "photo", ba); 旧版本: db.updateTblFieldsValue("TB1", "WHERE sn=20", "height%f", dHeight, "photo%b", &ba, CDBProcess::szEnd); 新版本: db.updateTblFieldsValue("TB1", "WHERE sn=20", "height", dHeight, "photo", ba); 注:本版本代码需要C++11支持 [attachment=16199][attachment=16198]
|
|