1. 程式人生 > >封裝Qt的SQLite接口類

封裝Qt的SQLite接口類

.exe PE style tostring cpp 主機 fine key define

還沒測試完善。。

 1 #ifndef SQLITE_H
 2 #define SQLITE_H
 3 
 4 #include <QSqlDatabase>
 5 #include <QSqlQuery>
 6 #include <QSqlRecord>
 7 #include <QSqlError>
 8 #include <QMap>
 9 #include <QInternal>
10 #include <QString>
11 #include <QDebug>
12 
13 
14 class
Sqlite 15 { 16 QSqlDatabase db; 17 QString host_name; //主機名 18 QString user_name; //用戶名 19 QString pwd; //密碼 20 QString db_file_name; //數據庫文件名 21 QSqlError error; 22 QSqlQuery *query; 23 QSqlRecord rec; 24 public: 25 Sqlite(QString m_file_name,QString m_host_name,QString m_user_name,QString m_pwd);
26 ~Sqlite(); 27 bool create_table(QString table_name,QMap<QString,QString> table_data); //新建表 28 int db_query(QString m_query_sql); //發送數據庫語句 29 int add(QString table_name,QMap<QString,QString> data); //增加數據 30 int del(QString table_name,QMap<QString,QString> where); //
刪除一條記錄 31 int updata(QString table_name,QMap<QString,QString> where,QMap<QString,QString> data); //更新數據 32 int find(QString table_name,QList<QString> key,QMap<QString,QString> where,QList<QList<QString>> *row); //查找 33 int find(QString table_name,QList<QString> key,QList<QList<QString>> *row); //查找所有 34 QString getError(); 35 }; 36 37 #endif // SQLITE_H

sqlite.cpp

  1 #include "sqlite.h"
  2 
  3 Sqlite::Sqlite(QString m_file_name,QString m_host_name,QString m_user_name,QString m_pwd)
  4 {
  5     host_name=m_host_name;
  6     user_name=m_user_name;
  7     pwd=m_pwd;
  8     db_file_name=m_file_name;
  9     db=QSqlDatabase::addDatabase("QSQLITE");
 10     query=new QSqlQuery(db);
 11     db.setHostName(host_name);
 12     db.setUserName(user_name);
 13     db.setPassword(pwd);
 14     db.setDatabaseName(db_file_name);
 15     if(!db.open())
 16     {
 17         qDebug()<<"database open error.";
 18         error = db.lastError();
 19     }
 20 }
 21 
 22 
 23 /*
 24  *
 25  * create_table函數:創建數據庫表
 26  * table_name:表名
 27  * table_data:表項 名->屬性
 28  *
 29  */
 30 
 31 bool Sqlite::create_table(QString table_name,QMap<QString,QString> table_data)
 32 {
 33     QSqlQuery query;
 34     QString sql="create table "+table_name+" (";
 35     for(QMap<QString,QString>::const_iterator i=table_data.constBegin();i!=table_data.constEnd();i++)
 36     {
 37         sql+=i.key()+ +i.value();
 38         if(i!=table_data.constEnd())
 39             sql+=,;
 40     }
 41     sql.chop(1);
 42     sql+=")";
 43     qDebug()<<sql;
 44     query.prepare(sql);
 45     return query.exec();
 46 }
 47 
 48 /*
 49  * 向數據庫中增加數據
 50  */
 51 
 52 int Sqlite::add(QString table_name, QMap<QString, QString> data)
 53 {
 54     QString sql="insert into "+table_name+  "(";
 55     QString values=" values(";
 56     for(QMap<QString,QString>::const_iterator i=data.constBegin();i!=data.constEnd();i++)
 57     {
 58         sql+=i.key()+", ";
 59         values+=i.value()+", ";
 60     }
 61     sql.chop(2);
 62     values.chop(2);
 63     sql+=")";
 64     values+=")";
 65     sql+=values;
 66     qDebug()<<sql;
 67     query->prepare(sql);
 68     return query->exec();
 69 }
 70 
 71 /*
 72  * 向數據庫發送一條語句
 73  */
 74 
 75 int Sqlite::db_query(QString m_query_sql)
 76 {
 77     query->prepare(m_query_sql);
 78     return query->exec();
 79 }
 80 
 81 /*
 82  * 刪除一條記錄
 83  */
 84 
 85 int Sqlite::del(QString table_name, QMap<QString, QString> where)
 86 {
 87     QString sql="delete ";
 88     sql+=table_name;
 89     sql+=" where ";
 90     for(QMap<QString,QString>::const_iterator i=where.constBegin();i!=where.constEnd();i++)
 91     {
 92         sql+=i.key()+"=";
 93         sql+=""+i.value()+"";
 94     }
 95     sql.chop(2);
 96     query->prepare(sql);
 97     return query->exec();
 98 }
 99 
100 /*
101  * 修改數據庫記錄
102  */
103 int Sqlite::updata(QString table_name, QMap<QString, QString> where, QMap<QString, QString> data)
104 {
105     QString sql="updata "+table_name+" set";
106     for(QMap<QString,QString>::const_iterator i=where.constBegin();i!=where.constEnd();i++)
107     {
108         sql+=i.key()+"=";
109         sql+=i.value()+" ";
110     }
111     sql+="where ";
112     for(QMap<QString,QString>::const_iterator i=where.constBegin();i!=where.constEnd();i++)
113     {
114         sql+=i.key()+"=";
115         sql+=i.value()+" ";
116     }
117     return query->exec();
118 }
119 
120 /*
121  * 查找所有記錄
122  */
123 
124 int Sqlite::find(QString table_name,QList<QString> key,QList<QList<QString>> *row)
125 {
126     QString sql="select ";
127     int len=key.size();
128     for(int i=0;i<len;i++)
129     {
130         sql+=key.at(i);
131         sql+=",";
132     }
133     sql.chop(1);
134     sql+=" from "+table_name;
135     //qDebug()<<sql;
136     query->prepare(sql);
137     if(query->exec())
138     {
139         while (query->next()) {
140             QList<QString> j;
141             for(int i=0;i<len;i++)
142             {
143                 j.append(query->value(i).toString());
144             }
145             row->append(j);
146         }
147         return 1;
148     }
149     else return 0;
150 }
151 
152 int Sqlite::find(QString table_name, QList<QString> key, QMap<QString, QString> where, QList<QList<QString> > *row)
153 {
154     QString sql="select ";
155     int len=key.size();
156     for(int i=0;i<len;i++)
157     {
158         sql+=key.at(i);
159         sql+=",";
160     }
161     sql.chop(1);
162     sql+=" from "+table_name;
163     sql+=" where ";
164     for(QMap<QString,QString>::const_iterator i=where.constBegin();i!=where.constEnd();i++)
165     {
166         sql+=i.key()+"="+i.value()+",";
167     }
168     sql.chop(1);
169     //qDebug()<<sql;
170     query->prepare(sql);
171     if(query->exec())
172     {
173         while (query->next()) {
174             QList<QString> j;
175             for(int i=0;i<len;i++)
176             {
177                 j.append(query->value(i).toString());
178             }
179             row->append(j);
180         }
181         return 1;
182     }
183     else return 0;
184 }
185 
186 /*
187  * 獲取錯誤信息
188  */
189 
190 QString Sqlite::getError()
191 {
192     return error.text();
193 }
194 
195 
196 
197 Sqlite::~Sqlite()
198 {
199     db.close();
200 }

封裝Qt的SQLite接口類