现有
数据库类database :
- class DataBase : public QObject{ Q_OBJECTpublic: const static QString _ID; const static QString DATABASE_NAME;
-
- const static QString PRODUCT_TAB_NAME;
- const static QString PLUCODE; const static QString PRODUCT_CODE; const static QString PRODUCT_FULL_NAME; const static QString PRODUCT_SHORT_NAME; const static QString PRODUCT_ICON;
- static QSqlDatabase& getDataBase();
- signals: public slots:private:
- explicit DataBase(QObject *parent = 0); static DataBase *mDbInstance; QSqlDatabase mDb;
- void createProductTable(QSqlDatabase&);
- };
以及查询类:
- #ifndef DATABASEQUERY_H#define DATABASEQUERY_H
- //#include <QSqlQuery>#include <QVariant>#include <QStringList>#include "database.h"#include <QtSql/QSqlQuery>
- class DataBaseQuery : public QSqlQuery{public: explicit DataBaseQuery(QSqlDatabase db=DataBase::getDataBase());
- bool insert(QString tabName,QMap<QString,QVariant> &dataMap);
- bool selectTable(QString tabName,const QStringList *keyList=NULL,QString option="",QString shortItem="",bool shortdesc=0); bool selectTable(QStringList *tabList,const QStringList *keyList=NULL,QString option=""); bool leftJoin(QString tabName1, QString tabName2, const QStringList *keyList,QString option); bool deleteItem(QString tabName,QString option=""); bool updateItem(QString tabName,QMap<QString,QVariant> &dataMap,QString option=""); int size();};
其中inset()函数的定义如下:
- bool DataBaseQuery::insert(QString tabName,QMap<QString,QVariant> &dataMap)//Q<QString >//const QStringList *keyList,QVariantList *valueList){ QString str = "insert into " +tabName + " ("; QString valueStr = "values (";
- int i; QStringList keyList = dataMap.keys();//dataList.keys(); QVariantList valueList = dataMap.values(); for(i=0;i<keyList.count()-1;i++) { str+=keyList.at(i); str+=','; valueStr += "?"; valueStr += ','; } str+=keyList.at(i); str+=") "; valueStr += "?"; valueStr += ')'; str+=valueStr; prepare(str); //qDebug()<<str; for(i=0;i<keyList.count();i++) { addBindValue(valueList.at(i)); }
- if(exec()==0) { return false; } return true;}
请问我怎么才能在工程的另一个文件test.cpp中调用insert()对数据库增加一行记录呢?