歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> PhoneGap HTML5 DB操作類, 做本地存儲

PhoneGap HTML5 DB操作類, 做本地存儲

日期:2017/3/1 10:21:11   编辑:Linux編程

類庫優點:

1. 快速建表

2. 封裝CURD操作,更加簡潔

3. 兼容PhoneGap

4. 自己用著順手,簡化操作

  1. void function(version){
  2. var app = function(e) {
  3. _this.DB;
  4. }
  5. /**
  6. * 初始化數據庫
  7. * @param {String} dbName
  8. * @param {String} dbVersion
  9. * @param {String} dbDesc
  10. * @param {String} dbSize
  11. */
  12. app.prototype.dbConnect = function(dbName,dbVersion,dbDesc,dbSize){
  13. try {
  14. if (!window.openDatabase) {
  15. console.log('Databases are not supported in this browser.');
  16. return false;
  17. } else {
  18. dbName = dbName ? dbName : 'SHICAI_APP';
  19. dbVersion = dbVersion ? dbVersion : '1.0';
  20. dbDesc = dbDesc ? dbDesc : 'SHICAI_DB for User Mobile';
  21. dbSize = dbSize ? dbSize : (2 * 1024 * 1024);
  22. _this.DB = openDatabase(dbName, dbVersion, dbDesc, dbSize);
  23. return true;
  24. }
  25. } catch(e) {
  26. if (e == 2) {
  27. console.log("Invalid database version.");
  28. } else {
  29. console.log("Unknown error "+e+".");
  30. }
  31. return false;
  32. }
  33. }
  34. /**
  35. * 創建表
  36. * @param {String} tableName
  37. * @param {Object} tableField
  38. */
  39. app.prototype.dbDefineTable = function(tableName,tableField){
  40. if(!tableName || !tableField){
  41. console.log('ERROR: Function "dbCreateTable" tableName or tableField is NULL.');
  42. }
  43. var fieldArr = [];
  44. var fieldItem;
  45. var i = 0;
  46. for (var field in tableField){
  47. field.toString();
  48. tableField[field].toString();
  49. fieldArr[i] = field+' '+tableField[field];
  50. i++;
  51. }
  52. fieldItem = fieldArr.join(",").toString();
  53. var SQL = 'CREATE TABLE IF NOT EXISTS '+tableName+' (';
  54. SQL += fieldItem;
  55. SQL +=')';
  56. console.log(SQL);
  57. _this.DB.transaction(function(tx){
  58. tx.executeSql(SQL,[],function(tx,result){
  59. return true;
  60. },function(tx,error){
  61. console.log(error);
  62. return false;
  63. });
  64. });
  65. }
  66. /**
  67. * 插入數據
  68. * @param {String} tableName
  69. * @param {Object} tableField
  70. * @param {Function} funName
  71. */
  72. app.prototype.dbInsert = function(tableName,tableField,funName){
  73. if(!tableField){
  74. console.log('ERROR: FUNCTION dbInsert tableField is NULL');
  75. return false;
  76. }
  77. var fieldKeyArr = [];
  78. var fieldValueArr = [];
  79. var fieldKey;
  80. var fieldValue;
  81. var i = 0;
  82. for (var field in tableField){
  83. field.toString();
  84. tableField[field].toString();
  85. fieldKeyArr[i] = field;
  86. fieldValueArr[i] = tableField[field];
  87. if(typeof(fieldValueArr[i]) !== 'number'){
  88. fieldValueArr[i] = '"'+fieldValueArr[i]+'"';
  89. }
  90. i++;
  91. }
  92. fieldKey = fieldKeyArr.join(",");
  93. fieldValue = fieldValueArr.join(",");
  94. var SQL = 'INSERT INTO '+tableName+' (';
  95. SQL += fieldKey;
  96. SQL += ') ';
  97. SQL += 'VALUES (';
  98. SQL += fieldValue;
  99. SQL += ')';
  100. console.log(SQL);
  101. _this.DB.transaction(function(tx){
  102. tx.executeSql(SQL,[],function(tx,result){
  103. funName(result);
  104. },function(tx,error){
  105. console.log(error);
  106. return false;
  107. });
  108. });
  109. }
  110. /**
  111. * 查詢所有結果
  112. * @param {String} tableName
  113. * @param {Function} funName
  114. * @param {Object} tableField
  115. * @param {Object} dbParams
  116. */
  117. app.prototype.dbFindAll = function(tableName,funName,tableField,dbParams){
  118. tableField = tableField ? tableField : '*';
  119. if(!tableName || !funName){
  120. console.log('ERROR: Function "dbFindAll" tableName or funName is NULL.');
  121. }
  122. var SQL = '';
  123. SQL +='SELECT '+tableField+' FROM '+tableName;
  124. _this.DB.transaction(function(tx){
  125. tx.executeSql(SQL,[],_findSuccess,function(tx,error){
  126. console.log(error);
  127. return false;
  128. });
  129. });
  130. function _findSuccess(tx,result){
  131. funName(result);
  132. }
  133. }
  134. /**
  135. * 刪除數據
  136. * @param {String} tableName
  137. * @param {Object} dbParams
  138. * @param {Function} funName
  139. */
  140. app.prototype.dbDelete = function(tableName,dbParams,funName){
  141. if(!tableName || !dbParams){
  142. console.log('ERROR: FUNCTION "dbDelete" tableName or dbParams is NULL');
  143. return false;
  144. }
  145. var SQL = '';
  146. SQL +='DELETE FROM '+tableName+' WHERE ';
  147. var paramArr = new Array();
  148. var paramStr = '';
  149. var i=0;
  150. for(var k in dbParams){
  151. if(typeof(dbParams[k]) !== 'number'){
  152. dbParams[k] = '"'+dbParams[k]+'"';
  153. }
  154. paramArr[i] = k.toString()+'='+dbParams[k];
  155. i++;
  156. }
  157. paramStr = paramArr.join(" AND ");
  158. SQL += paramStr;
  159. _this.DB.transaction(function(tx){
  160. tx.executeSql(SQL);
  161. },[],function(tx,result){
  162. funName(result);
  163. },function(tx,error){
  164. console.log(error);
  165. return false;
  166. });
  167. console.log(SQL);
  168. }
  169. /**
  170. * 更新數據表
  171. * @param {String} *tableName
  172. * @param {Object} *dbParams
  173. * @param {Object} *dbWhere
  174. * @param {Function} funName
  175. */
  176. app.prototype.dbUpdate = function(tableName,dbParams,dbWhere,funName){
  177. var SQL = 'UPDATE '+tableName+' SET ';
  178. var paramArr = new Array();
  179. var paramStr = '';
  180. var i=0;
  181. for(var k in dbParams){
  182. if(typeof(dbParams[k]) !== 'number'){
  183. dbParams[k] = '"'+dbParams[k]+'"';
  184. }
  185. paramArr[i] = k.toString()+'='+dbParams[k];
  186. i++;
  187. }
  188. paramStr = paramArr.join(" , ");
  189. SQL += paramStr;
  190. SQL += ' WHERE ';
  191. var whereArr = new Array();
  192. var whereStr = '';
  193. var n=0;
  194. for(var w in dbWhere){
  195. if(typeof(dbWhere[w]) !=='number'){
  196. dbWhere[n] = '"'+dbWhere[w]+'"';
  197. }
  198. whereArr[n] = w.toString()+'='+dbWhere[w];
  199. n++;
  200. }
  201. whereStr = whereArr.join(" AND ");
  202. SQL += whereStr;
  203. _this.DB.transaction(function(tx){
  204. tx.executeSql(SQL);
  205. },[],function(tx,result){
  206. funName(result);
  207. },function(tx,error){
  208. console.log(error);
  209. return false;
  210. });
  211. console.log(SQL);
  212. }
  213. /**
  214. * 清空數據表
  215. * @param {String} tableName
  216. * @return {Boolean}
  217. */
  218. app.prototype.dbTruncate = function(tableName){
  219. if(!tableName){
  220. console.log('ERROR:Table Name is NULL');
  221. return false;
  222. }
  223. function _TRUNCATE(tableName){
  224. _this.DB.transaction(function(tx){
  225. tx.executeSql('DELETE TABLE '+tableName);
  226. },[],function(tx,result){
  227. console.log('DELETE TABLE '+tableName);
  228. return true;
  229. },function(tx,error){
  230. console.log(error);
  231. return false;
  232. })
  233. }
  234. _TRUNCATE(tableName);
  235. }
  236. /**
  237. * @desc 刪除數據表
  238. * @param {String} tableName
  239. * @return {Boolean}
  240. */
  241. app.prototype.dbDrop = function(tableName){
  242. if(!tableName){
  243. console.log('ERROR:Table Name is NULL');
  244. return false;
  245. }
  246. function _DROP(tableName){
  247. _this.DB.transaction(function(tx){
  248. tx.executeSql('DROP TABLE '+tableName);
  249. },[],function(tx,result){
  250. console.log('DROP TABLE '+tableName);
  251. return true;
  252. },function(tx,error){
  253. console.log(error);
  254. return false;
  255. })
  256. }
  257. _DROP(tableName);
  258. }
  259. }('1.0');

PhoneGap 的詳細介紹:請點這裡
PhoneGap 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved