database.cpp 11 KB

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