一、实现代码
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
#include <QtDebug>
#include <string>
const char *kDbType = "QMYSQL"; // 数据库类型
const QString& kHost = "127.0.0.1"; // 数据库的ipd地址
const int kPort = 3306; // 数据库端口号
const QString& kUsername = "root"; // 数据库账号
const QString& kPassword = "123456"; // 数据库密码
//const QString& dbname = "test"; // 数据库名
class DBSql{
private:
QSqlDatabase db; // 数据库操作对象
QSqlError error; // SQLError对象
bool flag; // 判断函数是否执行
bool DBInit(){
db = QSqlDatabase::addDatabase(kDbType);
db.setHostName(kHost);
db.setPort(kPort);
db.setUserName(kUsername);
db.setPassword(kPassword);
QString sqlname = "数据库连接";
flag = db.open();
sqlerror(flag,NULL,sqlname);
return flag;
}
void sqlerror(bool flag,QString sql,QString sqlname){
QSqlQuery query(db);
if(flag){
qDebug() << sqlname+"成功!" << sql;
}else{
error = query.lastError();
qDebug() << sqlname+"失败!" << sql << error.driverText() << error.databaseText();
}
}
public:
// 构造函数,初始化数据库连接
DBSql(){
this->DBInit();
}
// 设置数据库名
void setDatabase(const QString& dbname){
db.setDatabaseName(dbname);
db.open();
}
// 查询表字段数
int sqlRecord(const QSqlQuery query){
//QSqlQuery query(db);
QSqlRecord record = query.record();
int const n = record.count();
qDebug()<<"表的字段总数为:"<< n;
return n;
}
// 增加记录
bool sqlInsert(const QString& sql){
QSqlQuery query(db);
flag = query.exec(sql);
sqlerror(flag,sql,"增加记录");
return flag;
}
// 删除记录
bool sqlDelete(const QString& sql){
sqlerror(flag,sql,"删除记录");
return flag;
}
// 查询记录
bool sqlQuery(const QString& sql){
db.open();
QSqlQuery query(db);
query.exec(sql);
int count = sqlRecord(query);
qDebug()<<"count"<<count;
while(query.next()){
int i = 0;
int n = count;
QString string;
QList<QString> list;
QSet<QString> set;
QMap<int,QString> map;
QHash<int,QString> hash;
QStringList slist;
QVector<QString> vector;
//QStack<int> stack;
//QLinkList<QString> linklist;
//QQueue<int> queue;
//QLine::QLine(int x1, int y1, int x2, int y2);
QListIterator<QString> qlistiter(list);
while(n-->0){
string.append(query.value(i).toString().append(" "));
list.append(query.value(i).toString());
slist.append(query.value(i).toString());
++i;
}
qDebug()<<string;
//qDebug()<<qlist;
qDebug()<<slist;
//qDebug()<<query.value(0).toString()<<query.value(1).toString()<<query.value(2).toString();
}
sqlerror(flag,sql,"查询记录");
return flag;
}
// 修改记录
bool sqlUpdata(const QString& sql){
QSqlQuery query(db);
query.prepare(sql); // sql = "updata user set name='汪东城' where id=11";
flag = query.exec();
sqlerror(flag,sql,"插入记录");
return flag;
}
void dbClose(){
if(db.isOpen()){
printf("The database is closed!\n");
db.close();
}
}
void show(){
printf("This is show methed.\n");
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
DBSql dbsql;
dbsql.setDatabase("test");
QString sqlinsert = "";
QString sqldelete = "";
QString sqlquery = "select * from user";
QString sqlupdate = "";
//dbsql.sqlInsert(sqlinsert);
//dbsql.sqlDelete(sqldelete);
dbsql.sqlQuery(sqlquery);
//dbsql.sqlUpdata(sqlupdate);
dbsql.dbClose();
dbsql.show();
return a.exec();
}
二、运行结果