• 3856阅读
  • 1回复

数据库中插入数据 [复制链接]

上一主题 下一主题
离线zhj_rabbit
 

只看楼主 倒序阅读 楼主  发表于: 2013-05-23
现有数据类database :
  1. class DataBase : public QObject{    Q_OBJECTpublic:    const static QString _ID;    const static QString DATABASE_NAME;
  2.     const static QString PRODUCT_TAB_NAME;
  3.     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;
  4.     static QSqlDatabase& getDataBase();
  5. signals:    public slots:private:
  6.     explicit DataBase(QObject *parent = 0);    static DataBase *mDbInstance;    QSqlDatabase mDb;
  7.     void createProductTable(QSqlDatabase&);
  8.     };



以及查询类:


  1. #ifndef DATABASEQUERY_H#define DATABASEQUERY_H
  2. //#include <QSqlQuery>#include <QVariant>#include <QStringList>#include "database.h"#include <QtSql/QSqlQuery>
  3. class DataBaseQuery : public QSqlQuery{public:    explicit DataBaseQuery(QSqlDatabase db=DataBase::getDataBase());
  4.     bool insert(QString tabName,QMap<QString,QVariant> &dataMap);
  5.     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()函数的定义如下:
  1. bool DataBaseQuery::insert(QString tabName,QMap<QString,QVariant> &dataMap)//Q<QString >//const QStringList *keyList,QVariantList *valueList){    QString str = "insert into " +tabName + " (";    QString valueStr = "values (";
  2.     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));    }
  3.     if(exec()==0)    {        return false;    }    return true;}



请问我怎么才能在工程的另一个文件test.cpp中调用insert()对数据库增加一行记录呢?

离线hehuim

只看该作者 1楼 发表于: 2013-05-24
改下格式,看的累
快速回复
限100 字节
 
上一个 下一个