#include "QWiseSqlDatabase.h"
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QDebug>
QWiseSqlDatabase::QWiseSqlDatabase(QObject *parent)
:QObject(parent)
{
//qDebug()<<QSqlDatabase::drivers();
}
bool QWiseSqlDatabase::open(const QString &name,
const QString &user,
const QString &password,
const QString &host,
int port)
{
bool status = true;
m_db = QSqlDatabase::addDatabase("QMYSQL");
m_db.setDatabaseName( name );
m_db.setUserName( user );
m_db.setPassword( password );
m_db.setHostName( host );
m_db.setPort(port);
m_name = name;
m_user = user;
m_password = password;
m_host = host;
m_port = port;
if (!m_db.open())
{
qDebug()<<"Failed to open database: "
<<m_db.lastError().driverText()
<<m_db.lastError().databaseText();
status = false;
}
return status;
}
QWiseSqlDatabase::~QWiseSqlDatabase()
{
close();
}
void QWiseSqlDatabase::close()
{
if (m_db.isOpen())
{
m_db.close();
}
}
bool QWiseSqlDatabase::insert(const QString &table, QStringList &names, QStringList &values, int &numRowsAffected)
{
if (names.size() != values.size())
return false;
QSqlQuery query(QSqlDatabase::database());
QString sql = QString("insert into ") + table + QString("(");
for (int i = 0; i < names.size(); i++)
{
sql = sql + names.value(i);
if (i != names.size() - 1)
{
sql+=QString(",");
}
else
{
sql = sql + QString(")");
}
}
sql = sql + QString("values (");
for (int i = 0; i < values.size(); i++)
{
sql = sql + QString("'") + values.value(i) + QString("'");
if (i != values.size()-1)
{
sql = sql + QString(",");
}
}
sql = sql + QString(")");
bool status = query.exec(sql);
numRowsAffected = query.numRowsAffected();
return status;
}
bool QWiseSqlDatabase::insert(const QString &table, QStringList &names, QStringList &values)
{
int numRowsAffected;
return insert(table, names, values, numRowsAffected);
}
bool QWiseSqlDatabase::update(const QString &table, QStringList &names, QStringList &values, QString &expression)
{
if (names.size() != values.size())
{
return false;
}
//UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
QSqlQuery query(QSqlDatabase::database());
QString sql = QString("update ")+table+QString(" set ");
for (int i = 0; i < names.size(); i++)
{
sql = sql + names.value(i);
sql = sql + QString(" = '");
sql = sql + values.value(i);
sql = sql + QString("'");
if (i != names.size()-1)
{
sql = sql + QString(" ,");
}
}
sql = sql + QString(" ") + expression;
return query.exec(sql);
}
bool QWiseSqlDatabase::del(const QString &table, QString &expression)
{
//DELETE FROM 表名称 WHERE 列名称 = 值
QSqlQuery query(QSqlDatabase::database());
QString sql = QString("delete from ") + table + QString(" ") + expression;
return query.exec(sql);
}
//条件查询数据库
bool QWiseSqlDatabase::select(const QString &table, QStringList &names, QVector<QStringList> &values, QString &expression, int &numRowsAffected)
{
if (!(names.size() > 0))
return false;
QSqlQuery query(QSqlDatabase::database());
QString sql;
for (int i = 0; i < names.size(); i++)
{
if (i < (names.size() - 1))
{
sql += names.value(i) + QString(" ,");
}
else
{
sql += names.value(i);
}
}
sql = QString("select %1 from %2").arg(sql).arg(table);
if (!expression.isEmpty())
sql += QString(" where ") + expression;
qDebug()<<sql;
bool status = query.exec(sql);
while (query.next())
{
QStringList value;
for (int i = 0; i < names.size(); i++)
{
value << query.value(i).toString();
}
values.push_back(value);
}
numRowsAffected = query.size();
return status;
}
bool QWiseSqlDatabase::select(const QString &table, QStringList &names, QVector<QStringList> &values, int &numRowsAffected)
{
return select(table, names, values, QString(""), numRowsAffected);
}
C++、QT连接数据库的ODBC驱动
1星 需积分: 50 83 浏览量
2015-09-06
10:12:18
上传
评论 3
收藏 2KB RAR 举报
SunkingYang
- 粉丝: 1w+
- 资源: 57
最新资源
- GEC6818:一款高性能嵌入式开发板GEC6818:一款高性能嵌入式开发板
- 红外和可见光图像融合,红外和可见光图像融合目的,Python实现源码(优质项目源码).zip
- Python中的数据可视化工具Matplotlib
- Yolov8算法在自定义数据集上的训练和应用Yolov8算法在自定义数据集上的训练和应用
- 代码迷宫2.sb3
- C#课程设计大作基于WinForm的页面美观功能完整的导师双选系统源码..zip
- 基于C#实现的Crazepony上位机源代码
- 基于Flask+vue的环境管理系统源码(优质项目源码).zip
- 冒泡排序的定义及java代码实现
- 平均电流知识点(包含平均电流的建模和概述)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈