#include "SqlDatabase.h"
#include <QVariant>
#include <QDebug>
#include <QMutex>
QMutex mutex;
SqlDatabase::SqlDatabase(const QString &connectionName)
{
mutex.lock();
m_customerQueryIsOK = false;
if (QSqlDatabase::contains(connectionName)) {
m_db = QSqlDatabase::database(connectionName);
} else {
m_db = QSqlDatabase::addDatabase("QSQLITE", connectionName);
}
m_db.setHostName("easybook-3313b0"); //设置数据库主机名
m_db.setDatabaseName("data.db"); //设置数据库名
m_db.setUserName("root"); //设置数据库用户名
m_db.setPassword("123456"); //设置数据库密码
m_db.open();
int count = 0;
// 创建客户信息表
m_customerQuery = new QSqlQuery(QSqlDatabase::database(connectionName));
bool ret = m_customerQuery->exec(QString("select count(*) from sqlite_master where type='table' and name='%1'").arg(CUSTOMER_TABLE)); //关键的判断
if (ret) {
while (m_customerQuery->next()) {
count = m_customerQuery->value(0).toString().toInt();
}
}
if (0 == count) {
QString cmd = QString("create table %1(name varchar primary key,"
"level varchar,"
"status varchar,"
"enterDate DATE,"
"inquirySource varchar,"
"background varchar,"
"address varchar,"
"companyName varchar,"
"websit varchar,"
"email varchar,"
"phoneNumber varchar,"
"position varchar,"
"schedule varchar,"
"salesman varchar,"
"remarks varchar)").arg(CUSTOMER_TABLE);
m_customerQueryIsOK = m_customerQuery->exec(cmd);
m_errorStr = m_customerQuery->lastError().text();
} else {
m_customerQueryIsOK = true;
}
// 创建订单信息表
m_orderQuery = new QSqlQuery(QSqlDatabase::database(connectionName));
ret = m_orderQuery->exec(QString("select count(*) from sqlite_master where type='table' and name='%1'").arg(ORDER_TABLE)); //关键的判断
if (ret) {
while (m_orderQuery->next()) {
count = m_orderQuery->value(0).toString().toInt();
}
}
if (0 == count) {
QString cmd = QString("create table %1(orderID varchar primary key,"
"customerName varchar,"
"orderStatus varchar,"
"payTime DATE,"
"payType varchar,"
"realIncome DOUBLE,"
"freightCustomer DOUBLE,"
"freightFactoryToUs DOUBLE,"
"freightUsToForwarding DOUBLE,"
"freightForeign DOUBLE,"
"exchangeRate DOUBLE,"
"handlingFee DOUBLE,"
"remarks varchar,"
"salesman varchar,"
"contractID varchar)").arg(ORDER_TABLE);
m_orderQueryIsOK = m_orderQuery->exec(cmd);
m_errorStr = m_orderQuery->lastError().text();
} else {
m_orderQueryIsOK = true;
}
// 创建产品信息表
m_productQuery = new QSqlQuery(QSqlDatabase::database(connectionName));
ret = m_productQuery->exec(QString("select count(*) from sqlite_master where type='table' and name='%1'").arg(PRODUCT_TABLE)); //关键的判断
if (ret) {
while (m_productQuery->next()) {
count = m_productQuery->value(0).toString().toInt();
}
}
if (0 == count) {
QString cmd = QString("create table %1("
"number INTEGER PRIMARY KEY AUTOINCREMENT,"
"orderID varchar,"
"productName varchar,"
"price DOUBLE,"
"costPrice DOUBLE,"
"count INT,"
"spec varchar,"
"mark varchar)").arg(PRODUCT_TABLE);
m_productQueryIsOK = m_productQuery->exec(cmd);
m_errorStr = m_productQuery->lastError().text();
qDebug() << m_errorStr;
} else {
m_productQueryIsOK = true;
}
// 创建收支记录表
m_financialQuery = new QSqlQuery(QSqlDatabase::database(connectionName));
ret = m_financialQuery->exec(QString("select count(*) from sqlite_master where type='table' and name='%1'").arg(FINANCIAL_TABLE)); //关键的判断
if (ret) {
while (m_financialQuery->next()) {
count = m_financialQuery->value(0).toString().toInt();
}
}
if (0 == count) {
QString cmd = QString("create table %1("
"number INTEGER PRIMARY KEY AUTOINCREMENT,"
"contractID varchar,"
"customerName varchar,"
"type varchar,"
"amount DOUBLE,"
"payTime varchar,"
"payType varchar,"
"remarks varchar)").arg(FINANCIAL_TABLE);
m_financialQueryIsOK = m_financialQuery->exec(cmd);
m_errorStr = m_financialQuery->lastError().text();
qDebug() << m_errorStr;
} else {
m_financialQueryIsOK = true;
}
//qDebug() << m_customerQueryIsOK << m_orderQueryIsOK << m_productQueryIsOK;
mutex.unlock();
}
QString SqlDatabase::getErrorStr()
{
return m_errorStr;
}
bool SqlDatabase::insertCustomerInfo(const CustomerInformation& customerInfo)
{
bool ret = false;
if (!m_customerQueryIsOK) {
m_errorStr = "m_customerQueryIsOK is false";
return ret;
}
if (customerInfoIsExist(customerInfo.name)) { // 要插入的数据已经存在
m_errorStr = "data is exist, please update!";
ret = false;
//updateCustomerInfo(customerInfo);
}
else // 插入数据
{
m_customerQuery->prepare(QString("insert into %1 values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)").arg(CUSTOMER_TABLE));
m_customerQuery->bindValue(0, customerInfo.name);
m_customerQuery->bindValue(1, customerInfo.level);
m_customerQuery->bindValue(2, customerInfo.status);
m_customerQuery->bindValue(3, customerInfo.enterDate);
m_customerQuery->bindValue(4, customerInfo.inquirySource);
m_customerQuery->bindValue(5, customerInfo.background);
m_customerQuery->bindValue(6, customerInfo.address);
m_customerQuery->bindValue(7, customerInfo.companyName);
m_customerQuery->bindValue(8, customerInfo.websit);
m_customerQuery->bindValue(9, customerInfo.email);
m_customerQuery->bindValue(10, customerInfo.phoneNumber);
m_customerQuery->bindValue(11, customerInfo.position);
m_customerQuery->bindValue(12, customerInfo.schedule);
m_customerQuery->bindValue(13, customerInfo.salesman);
m_customerQuery->bindValue(14, customerInfo.remarks);
ret = m_customerQuery->exec();
if(!ret)
{
m_errorStr = "插入数据失败:" + m_customerQuery->lastError().text();
} else {
qDebug() << "插入数据成功!";
m_errorStr = "success!";
}
}
return ret;
}
bool SqlDatabase::updateCustomerInfo(const CustomerInformation& customerInfo)
{
bool ret = fal
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
FinancialManagement-master.zip (33个子文件)
FinancialManagement-master
MainWindowUI.cpp 3KB
TableWidgetDialog.h 703B
OrderInformation.cpp 2KB
OrderDialog.cpp 13KB
SqlDatabase.cpp 46KB
CustomerInfoDialog.h 1KB
FinancialManagement.pro.user.5e9429b 23KB
SearchOrderDialog.cpp 7KB
FinancialRecordDialog.cpp 6KB
FinancialManagement.pro.user.794f8dc 43KB
FinancialRecordInfo.h 608B
FinancialRecordDialog.h 1KB
FinancialManagement.pro.user.22 43KB
Version.h 2KB
FinancialManagement.pro.user 22KB
SearchOrderDialog.h 2KB
main.cpp 172B
Log.h 2KB
MainWindowSlots.cpp 25KB
SqlDatabase.h 5KB
SearchFinancialRecordDialog.h 855B
TableWidgetDialog.cpp 1KB
OrderDialog.h 3KB
CustomerInformation.h 579B
SearchCustomerDialog.h 1KB
FinancialManagement.pro 1KB
SearchFinancialRecordDialog.cpp 2KB
TableWidget.cpp 45KB
TableWidget.h 5KB
SearchCustomerDialog.cpp 3KB
CustomerInfoDialog.cpp 7KB
OrderInformation.h 2KB
MainWindow.h 2KB
共 33 条
- 1
资源评论
博士僧小星
- 粉丝: 1934
- 资源: 5894
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功