database.cpp 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. #include "database.h"
  2. #include "QSqlRecord"
  3. Database::Database(QObject *parent) :
  4. QObject(parent)
  5. {
  6. }
  7. Database::~Database()
  8. {
  9. _database.close();
  10. }
  11. void Database::SetTableName(QString table)
  12. {
  13. _tableName = table + ".db";
  14. }
  15. bool Database::openDB()
  16. {
  17. _database = QSqlDatabase::addDatabase("QSQLITE","db");
  18. // _database.setDatabaseName(_tableName);
  19. _database.setDatabaseName(".//qtDb.db");
  20. return _database.open();
  21. }
  22. bool Database::createProductDatabase()
  23. {
  24. QSqlDatabase db = QSqlDatabase::database("db");
  25. QSqlQuery query(db);
  26. bool success = query.exec("CREATE TABLE product ("
  27. "goods_id INTEGER NOT NULL,"
  28. "code_single VARCHAR NOT NULL,"
  29. "quantity INTEGER NOT NULL,"
  30. "batch_no VARCHAR NOT NULL,"
  31. "category VARCHAR NOT NULL,"
  32. "level_id INTEGER NOT NULL,"
  33. "tube_number INTEGER NOT NULL,"
  34. "gross_weight INTEGER NOT NULL,"
  35. "net_weight INTEGER NOT NULL,"
  36. "machine_no VARCHAR NOT NULL,"
  37. "packing_time VARCHAR NOT NULL,"
  38. "packing_type VARCHAR NOT NULL,"
  39. "carton_type VARCHAR NOT NULL,"
  40. "operator_id INTEGER NOT NULL,"
  41. "tongbu VARCHAR(1) DEFAULT 0,"
  42. "remark VARCHAR);");
  43. // bool success = query.exec("drop table product;");
  44. if(success)
  45. {
  46. qDebug() << QObject::tr("product数据库表创建成功!\n");
  47. return true;
  48. }
  49. else
  50. {
  51. qDebug() << QObject::tr("product数据库表已存在!\n");
  52. return false;
  53. }
  54. }
  55. bool Database::createDetailsDatabase()
  56. {
  57. QSqlDatabase db = QSqlDatabase::database("db");
  58. QSqlQuery query(db);
  59. bool success = query.exec("CREATE TABLE details ("
  60. "code_single VARCHAR NOT NULL,"
  61. "case_number VARCHAR NOT NULL,"
  62. "box_weight INTEGER NOT NULL,"
  63. "tube_number INTEGER NOT NULL,"
  64. "bucket_weight INTEGER NOT NULL,"
  65. "gross_weight INTEGER NOT NULL,"
  66. "net_weight INTEGER NOT NULL,"
  67. "sort VARCHAR NOT NULL,"
  68. "remark VARCHAR);");
  69. if(success)
  70. {
  71. qDebug() << QObject::tr("details数据库表创建成功!\n");
  72. return true;
  73. }
  74. else
  75. {
  76. qDebug() << QObject::tr("details数据库表已存在!\n");
  77. return false;
  78. }
  79. }
  80. bool Database::insertProduct(product_data productData)
  81. {
  82. QSqlDatabase db = QSqlDatabase::database("db");
  83. QSqlQuery query(db);
  84. query.prepare("INSERT INTO product(goods_id,"
  85. "code_single, quantity, batch_no, category,level_id, tube_number,"
  86. "gross_weight, net_weight, machine_no, packing_time,"
  87. "packing_type, carton_type, operator_id, remark)"
  88. "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
  89. query.bindValue(0,productData.goods_id);
  90. query.bindValue(1,productData.code_single);
  91. query.bindValue(2,productData.quantity);
  92. query.bindValue(3,productData.batch_no);
  93. query.bindValue(4,productData.category);
  94. query.bindValue(5,productData.level_id);
  95. query.bindValue(6,productData.tube_number);
  96. query.bindValue(7,productData.gross_weight);
  97. query.bindValue(8,productData.net_weight);
  98. query.bindValue(9,productData.machine_no);
  99. query.bindValue(10,productData.packing_time);
  100. query.bindValue(11,productData.packing_type);
  101. query.bindValue(12,productData.carton_type);
  102. query.bindValue(13,productData.operator_id);
  103. query.bindValue(14,productData.remark);
  104. bool success=query.exec();
  105. return success;
  106. }
  107. bool Database::insertDetails(details_data detailsData)
  108. {
  109. QSqlDatabase db = QSqlDatabase::database("db");
  110. QSqlQuery query(db);
  111. query.prepare("INSERT INTO details(code_single,"
  112. "case_number, box_weight, tube_number, bucket_weight,"
  113. "gross_weight, net_weight, sort, remark)"
  114. "VALUES(?,?,?,?,?,?,?,?,?)");
  115. query.bindValue(0,detailsData.code_single);
  116. query.bindValue(1,detailsData.case_number);
  117. query.bindValue(2,detailsData.box_weight);
  118. query.bindValue(3,detailsData.tube_number);
  119. query.bindValue(4,detailsData.bucket_weight);
  120. query.bindValue(5,detailsData.gross_weight);
  121. query.bindValue(6,detailsData.net_weight);
  122. query.bindValue(7,detailsData.sort);
  123. query.bindValue(8,detailsData.remark);
  124. bool success=query.exec();
  125. return success;
  126. }
  127. bool Database::changeState(QString codesingle)
  128. {
  129. QSqlDatabase db = QSqlDatabase::database("db");
  130. QSqlQuery query(db);
  131. bool success = query.exec("update product set tongbu=1 where code_single="+codesingle);
  132. if(success)
  133. {
  134. return true;
  135. }
  136. else
  137. {
  138. return false;
  139. }
  140. }
  141. bool Database::update(QString &table, QStringList &names, QStringList &values, QString &expression)
  142. {
  143. if (names.size() != values.size())
  144. return false;
  145. //UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
  146. // QSqlQuery query(QSqlDatabase::database());
  147. QSqlDatabase db = QSqlDatabase::database("db");
  148. QSqlQuery query(db);
  149. QString sql = QString("update ")+table+QString(" set ");
  150. for (int i = 0; i < names.size(); i++)
  151. {
  152. sql += names.value(i);
  153. sql += QString(" = '");
  154. sql = sql + values.value(i);
  155. sql = sql + QString("'");
  156. if (i != names.size()-1)
  157. sql = sql + QString(" ,");
  158. }
  159. sql = sql + QString(" where ") + expression;
  160. return (query.exec(sql)) ? true : false;
  161. }
  162. bool Database::del(QString &table, QString &expression)
  163. {
  164. //DELETE FROM 表名称 WHERE 列名称 = 值
  165. QSqlQuery query(QSqlDatabase::database());
  166. QString sql = QString("delete from ") + table + QString(" where ") + expression;
  167. return (query.exec(sql)) ? true : false;
  168. }
  169. QList<QMap<QString,QString>> Database::GetValues(QString &table, QStringList &values)
  170. {
  171. dbmxdata.clear();
  172. dbmxlist.clear();
  173. QSqlDatabase db = QSqlDatabase::database("db");
  174. QSqlQuery query(db);
  175. QString sql = QString("select * from ") + table;
  176. query.exec(sql);
  177. while (query.next())
  178. {
  179. for(int i = 0;i <= values.size()-1;i++){
  180. // qDebug()<<values.at(i) << query.value(values.at(i)).toString();
  181. dbmxdata.insert(values.at(i),query.value(values.at(i)).toString());
  182. }
  183. dbmxlist.append(dbmxdata);
  184. dbmxdata.clear();
  185. }
  186. return dbmxlist;
  187. }
  188. //void Database::connectDB(QString dbName, QString username, QString password)
  189. //{
  190. // if (QSqlDatabase::contains("qt_sql_default_connection"))
  191. // {
  192. // database = QSqlDatabase::database("qt_sql_default_connection");
  193. // }
  194. // else
  195. // {
  196. // database = QSqlDatabase::addDatabase("QSQLITE");
  197. // database.setDatabaseName(dbName);
  198. // database.setUserName(username);
  199. // database.setPassword(password);
  200. // }
  201. // if (!database.open())
  202. // {
  203. // qDebug() << "Error: Failed to connect database." << database.lastError();
  204. // }
  205. // else
  206. // {
  207. // QSqlQuery sql_query;
  208. // QString create_sql;
  209. //// create_sql = "create table login (name varchar(100), logintime DATETIME)";
  210. // sql_query.prepare(create_sql);
  211. // if(!sql_query.exec())
  212. // {
  213. // qDebug() << "Error: Fail to create table." << sql_query.lastError();
  214. // }
  215. // else
  216. // {
  217. // qDebug() << "Table created!";
  218. // }
  219. // }
  220. //}
  221. //bool Database::insert(QString &table, QStringList &names, QStringList &values)
  222. //{
  223. // if(names.size() != values.size())
  224. // {
  225. // return false;
  226. // }
  227. //// QSqlQuery query(QSqlDatabase::database());
  228. // QSqlDatabase db = QSqlDatabase::database("db");
  229. // QSqlQuery query(db);
  230. // QString sql = QString("insert into ") + table + QString("(");
  231. // int i;
  232. // for(i = 0; i < names.size(); i++)
  233. // {
  234. // sql = sql + names.value(i);
  235. // if(i != names.size()-1)
  236. // {
  237. // sql += QString(",");
  238. // }
  239. // else
  240. // {
  241. // sql += QString(")");
  242. // }
  243. // }
  244. // sql = sql + QString("values (");
  245. // for(i = 0; i < values.size(); i++)
  246. // {
  247. // sql = sql + QString("'") + values.value(i) + QString("'");
  248. // if (i != values.size()-1)
  249. // {
  250. // sql += QString(",");
  251. // }
  252. // }
  253. // sql += QString(")");
  254. // return (query.exec(sql)) ? true : false;
  255. //}