QT MySQL数据库增删查改
程序员文章站
2022-05-22 18:58:56
...
一、实现代码
#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();
}
二、运行结果
上一篇: vue监听dom大小改变
下一篇: 卫青:出身家仆,却战功赫赫名垂千古
推荐阅读
-
ubuntu linux下使用Qt连接MySQL数据库的方法
-
iOS中FMDB数据库之增删改查使用实例
-
Windows 8 Metro用C#连接SQLite及创建数据库,数据表的增删改查的实现
-
ubuntu linux下使用Qt连接MySQL数据库的方法
-
PHP连接数据库实现注册页面的增删改查操作
-
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
-
Windows 8 Metro用C#连接SQLite及创建数据库,数据表的增删改查的实现
-
C#如何实现对sql server数据库的增删改查
-
python操作小程序云数据库实现简单的增删改查功能
-
Android SQLite数据库增删改查操作的使用详解