#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);
}
SunkingYang
- 粉丝: 2w+
- 资源: 56
最新资源
- 基于bilibili弹幕分析,包含爬虫、词云分析、词频分析、情感分析、构建衍生指标,可视化资料齐全+详细文档+源码.zip
- 基于Python 网络爬虫实战、数据分析合集 当当 网易云音乐 unsplash 必胜客 猫眼资料齐全+详细文档+源码.zip
- 基于python flask vue-element-admin selenium 爬虫 后台资料齐全+详细文档+源码.zip
- 基于Python爬虫小项目汇总(招聘信息电影信息股票信息天气信息贴吧信息图片信息视频信息..)资料齐全+详细文档+源码.zip
- 基于python模拟登陆一些大型网站资料齐全+详细文档+源码.zip
- 基于scrapy + selenium + phantomjs + mongodb机票爬虫(去哪儿和携程网)资料齐全+详细文档+源码.zip
- 基于rocket电商网站爬虫合集,淘宝京东亚马逊等资料齐全+详细文档+源码.zip
- 基于Python入门网络爬虫之精华版资料齐全+详细文档+源码.zip
- 基于Scrapy + seleniumwebdriver + 爬取某书整站爬虫资料齐全+详细文档+源码.zip
- 基于scrapy+scrapy-redis+selenium+pandas+matplotlibaqi天气信息爬虫、清洗资料齐全+详细文档+源码.zip
- 基于selenium + sqlite3 爬虫,实现将淘宝网站数据、1688网站数据的爬取,淘宝爬虫1688爬虫;并保存到数据库中资料齐全+详细文档+源码.zip
- 基于scrapy分布式爬虫,selenium 爬虫,手机群控(自动化)反爬破解文档资料齐全+详细文档+源码.zip
- 基于selenium 携程酒店爬虫+简单数据分析资料齐全+详细文档+源码.zip
- 基于selenium+python实现京东商品爬虫淘宝店铺爬虫资料齐全+详细文档+源码.zip
- 基于selenium裁判文书网爬虫,文书网登录资料齐全+详细文档+源码.zip
- 基于Selenium×Firefox自动化爬虫模板资料齐全+详细文档+源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈