database.cpp 9.6 KB

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