database.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. #include "database.h"
  2. #include "QSqlRecord"
  3. #include <QStringList>
  4. Database::Database(QObject *parent) :
  5. QObject(parent)
  6. {
  7. }
  8. Database::~Database()
  9. {
  10. _database.close();
  11. }
  12. void Database::SetTableName(QString table)
  13. {
  14. _tableName = table + ".db";
  15. }
  16. bool Database::openDB()
  17. {
  18. _database = QSqlDatabase::addDatabase("QSQLITE","db");
  19. // _database.setDatabaseName(_tableName);
  20. _database.setDatabaseName(".//qtDb.db");
  21. return _database.open();
  22. }
  23. bool Database::createProductDatabase()
  24. {
  25. QSqlDatabase db = QSqlDatabase::database("db");
  26. QSqlQuery query(db);
  27. bool success = query.exec("CREATE TABLE product ("
  28. "goods_id INTEGER NOT NULL," //商品ID
  29. "code_single VARCHAR NOT NULL," //码单
  30. "quantity INTEGER NOT NULL," //箱数
  31. "batch_no VARCHAR NOT NULL," //批号
  32. "category VARCHAR NOT NULL," //类型
  33. "level_id INTEGER NOT NULL," //等级id
  34. "tube_number INTEGER NOT NULL," //筒数
  35. "gross_weight INTEGER NOT NULL," //毛重 单位克
  36. "net_weight INTEGER NOT NULL," //净重 单位克
  37. "machine_no VARCHAR NOT NULL," //机台
  38. "packing_time VARCHAR NOT NULL," //打包时间
  39. "packing_type VARCHAR NOT NULL," //打包种类
  40. "carton_type VARCHAR NOT NULL," //纸箱种类
  41. "operator_id INTEGER NOT NULL," //操作员ID
  42. "specs VARCHAR NOT NULL," //规格
  43. "denier VARCHAR," //旦数(D)
  44. "dtex VARCHAR," //分特(dt)
  45. "fiber VARCHAR," //孔数(F)
  46. "tongbu VARCHAR(1) DEFAULT 0," //同步状态
  47. "remark VARCHAR);"); //备注
  48. // success = query.exec("drop table product;");
  49. if(success)
  50. {
  51. qDebug() << QObject::tr("product数据库表创建成功!\n");
  52. return true;
  53. }
  54. else
  55. {
  56. qDebug() << QObject::tr("product数据库表已存在!\n");
  57. return false;
  58. }
  59. }
  60. bool Database::createDetailsDatabase()
  61. {
  62. QSqlDatabase db = QSqlDatabase::database("db");
  63. QSqlQuery query(db);
  64. bool success = query.exec("CREATE TABLE details ("
  65. "code_single VARCHAR NOT NULL," //码单
  66. "case_number VARCHAR NOT NULL," //箱号
  67. "box_weight INTEGER NOT NULL," //皮重 单位克
  68. "tube_number INTEGER NOT NULL," //筒数
  69. "bucket_weight INTEGER NOT NULL," //筒重 单位克
  70. "gross_weight INTEGER NOT NULL," //毛重 单位克
  71. "net_weight INTEGER NOT NULL," //净重 单位克
  72. "sort VARCHAR NOT NULL," //排序
  73. "remark VARCHAR);"); //备注
  74. // success = query.exec("drop table details;");
  75. if(success)
  76. {
  77. qDebug() << QObject::tr("details数据库表创建成功!");
  78. return true;
  79. }
  80. else
  81. {
  82. qDebug() << QObject::tr("details数据库表已存在!");
  83. return false;
  84. }
  85. }
  86. bool Database::insertProduct(product_data productData)
  87. {
  88. QSqlDatabase db = QSqlDatabase::database("db");
  89. QSqlQuery query(db);
  90. query.prepare("INSERT INTO product(goods_id,"
  91. "code_single, quantity, batch_no, category,level_id, tube_number,"
  92. "gross_weight, net_weight, machine_no, packing_time,"
  93. "packing_type, carton_type, operator_id, specs, denier, dtex, fiber, remark)"
  94. "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
  95. query.bindValue(0,productData.goods_id);
  96. query.bindValue(1,productData.code_single);
  97. query.bindValue(2,productData.quantity);
  98. query.bindValue(3,productData.batch_no);
  99. query.bindValue(4,productData.category);
  100. query.bindValue(5,productData.level_id);
  101. query.bindValue(6,productData.tube_number);
  102. query.bindValue(7,productData.gross_weight);
  103. query.bindValue(8,productData.net_weight);
  104. query.bindValue(9,productData.machine_no);
  105. query.bindValue(10,productData.packing_time);
  106. query.bindValue(11,productData.packing_type);
  107. query.bindValue(12,productData.carton_type);
  108. query.bindValue(13,productData.operator_id);
  109. query.bindValue(14,productData.specs);
  110. query.bindValue(15,productData.denier);
  111. query.bindValue(16,productData.dtex);
  112. query.bindValue(17,productData.fiber);
  113. query.bindValue(18,productData.remark);
  114. bool success=query.exec();
  115. return success;
  116. }
  117. bool Database::insertDetails(details_data detailsData)
  118. {
  119. QSqlDatabase db = QSqlDatabase::database("db");
  120. QSqlQuery query(db);
  121. query.prepare("INSERT INTO details(code_single,"
  122. "case_number, box_weight, tube_number, bucket_weight,"
  123. "gross_weight, net_weight, sort, remark)"
  124. "VALUES(?,?,?,?,?,?,?,?,?)");
  125. query.bindValue(0,detailsData.code_single);
  126. query.bindValue(1,detailsData.case_number);
  127. query.bindValue(2,detailsData.box_weight);
  128. query.bindValue(3,detailsData.tube_number);
  129. query.bindValue(4,detailsData.bucket_weight);
  130. query.bindValue(5,detailsData.gross_weight);
  131. query.bindValue(6,detailsData.net_weight);
  132. query.bindValue(7,detailsData.sort);
  133. query.bindValue(8,detailsData.remark);
  134. bool success=query.exec();
  135. return success;
  136. }
  137. bool Database::changeState(QString codesingle)
  138. {
  139. QSqlDatabase db = QSqlDatabase::database("db");
  140. QSqlQuery query(db);
  141. bool success = query.exec("update product set tongbu=1 where code_single="+codesingle);
  142. if(success)
  143. {
  144. return true;
  145. }
  146. else
  147. {
  148. return false;
  149. }
  150. }
  151. bool Database::update(QString &table, QStringList &names, QStringList &values, QString &expression)
  152. {
  153. if (names.size() != values.size())
  154. return false;
  155. //UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
  156. // QSqlQuery query(QSqlDatabase::database());
  157. QSqlDatabase db = QSqlDatabase::database("db");
  158. QSqlQuery query(db);
  159. QString sql = QString("update ")+table+QString(" set ");
  160. for (int i = 0; i < names.size(); i++)
  161. {
  162. sql += names.value(i);
  163. sql += QString(" = '");
  164. sql = sql + values.value(i);
  165. sql = sql + QString("'");
  166. if (i != names.size()-1)
  167. sql = sql + QString(" ,");
  168. }
  169. sql = sql + QString(" where ") + expression;
  170. return (query.exec(sql)) ? true : false;
  171. }
  172. bool Database::del(QString &table, QString &expression)
  173. {
  174. //DELETE FROM 表名称 WHERE 列名称 = 值
  175. QSqlQuery query(QSqlDatabase::database());
  176. QString sql = QString("delete from ") + table + QString(" where ") + expression;
  177. return (query.exec(sql)) ? true : false;
  178. }
  179. QList<QMap<QString,QString>> Database::GetValues(QString table, QStringList &values,QString condition)
  180. {
  181. dbmxdata.clear();
  182. dbmxlist.clear();
  183. QSqlDatabase db = QSqlDatabase::database("db");
  184. QSqlQuery query(db);
  185. QString sql = QString("select * from ") + table +" "+ condition;
  186. query.exec(sql);
  187. qDebug()<<table;
  188. while (query.next())
  189. {
  190. for(int i = 0;i <= values.size()-1;i++){
  191. qDebug()<<values.at(i) << query.value(values.at(i)).toString();
  192. dbmxdata.insert(values.at(i),query.value(values.at(i)).toString());
  193. }
  194. dbmxlist.append(dbmxdata);
  195. dbmxdata.clear();
  196. }
  197. return dbmxlist;
  198. }
  199. //获取单个字段数据,以数组形式返回;
  200. QStringList Database::GetValuesList(QString table, QString value,QString condition)
  201. {
  202. QStringList list;
  203. QSqlDatabase db = QSqlDatabase::database("db");
  204. QSqlQuery query(db);
  205. // QString value;
  206. // for(int i = 0;i<values.size();i++){
  207. // value.append(values.at(i));
  208. // if(!i == values.size()-1){
  209. // value.append(",");
  210. // }
  211. // }
  212. QString sql = "select "+value+" from " + table +" "+ condition;
  213. query.exec(sql);
  214. while (query.next())
  215. {
  216. list.append(query.value(value).toString());
  217. // qDebug()<<query.value(values.at(i)).toString();
  218. }
  219. return list;
  220. }
  221. int Database::GetTablePage()
  222. {
  223. QSqlDatabase db = QSqlDatabase::database("db");
  224. QSqlQuery query(db);
  225. QString sql = QString("select count(*) from product");
  226. query.exec(sql);
  227. if(query.first())
  228. {
  229. return query.value(0).toInt();
  230. }
  231. return 0;
  232. }
  233. //void Database::connectDB(QString dbName, QString username, QString password)
  234. //{
  235. // if (QSqlDatabase::contains("qt_sql_default_connection"))
  236. // {
  237. // database = QSqlDatabase::database("qt_sql_default_connection");
  238. // }
  239. // else
  240. // {
  241. // database = QSqlDatabase::addDatabase("QSQLITE");
  242. // database.setDatabaseName(dbName);
  243. // database.setUserName(username);
  244. // database.setPassword(password);
  245. // }
  246. // if (!database.open())
  247. // {
  248. // qDebug() << "Error: Failed to connect database." << database.lastError();
  249. // }
  250. // else
  251. // {
  252. // QSqlQuery sql_query;
  253. // QString create_sql;
  254. //// create_sql = "create table login (name varchar(100), logintime DATETIME)";
  255. // sql_query.prepare(create_sql);
  256. // if(!sql_query.exec())
  257. // {
  258. // qDebug() << "Error: Fail to create table." << sql_query.lastError();
  259. // }
  260. // else
  261. // {
  262. // qDebug() << "Table created!";
  263. // }
  264. // }
  265. //}
  266. //bool Database::insert(QString &table, QStringList &names, QStringList &values)
  267. //{
  268. // if(names.size() != values.size())
  269. // {
  270. // return false;
  271. // }
  272. //// QSqlQuery query(QSqlDatabase::database());
  273. // QSqlDatabase db = QSqlDatabase::database("db");
  274. // QSqlQuery query(db);
  275. // QString sql = QString("insert into ") + table + QString("(");
  276. // int i;
  277. // for(i = 0; i < names.size(); i++)
  278. // {
  279. // sql = sql + names.value(i);
  280. // if(i != names.size()-1)
  281. // {
  282. // sql += QString(",");
  283. // }
  284. // else
  285. // {
  286. // sql += QString(")");
  287. // }
  288. // }
  289. // sql = sql + QString("values (");
  290. // for(i = 0; i < values.size(); i++)
  291. // {
  292. // sql = sql + QString("'") + values.value(i) + QString("'");
  293. // if (i != values.size()-1)
  294. // {
  295. // sql += QString(",");
  296. // }
  297. // }
  298. // sql += QString(")");
  299. // return (query.exec(sql)) ? true : false;
  300. //}