大家好!我是范范。本人刚接触ST2到现在刚刚两个月,6月1号接的项目,那时才知道有Sencha Touch2这个东西,到现在两个月了期间的幸酸就不说了。今天说说在项目中用到的HTML5的本地存储。可能有的地方不是很合理,大家可以提出宝贵意见。下面开整:
下面是创建数据库的代码:database.js
var initDatabase = function(db,tables){ for(var i=0;i<tables.length;i++){ pmdb.createTable(db,tables[i], function(){ //成功后回调函数 }, function(tx, error){ //失败后回调函数 console.log(i); } ); } }; var pmdb = { //建表,在系统初始化时调用 createTable:function (db,createSql,sucessCallback,failCallBack){ if(!db) { return ; } // 创建表 db.transaction( function(tx) { tx.executeSql( createSql, //createSql [], //参数 sucessCallback, //成功后回调函数 failCallBack //失败后回调函数 ); }); }, //执行, excute:function (db,sql,param,sucessCallback,failCallBack){ if(!db) { return ; } db.transaction(function(tx) { tx.executeSql( sql, param, sucessCallback, //成功后回调函数 failCallBack //失败后回调函数 ); }); }, //删除表 drop: function(db,tableName) { db.transaction(function (tx) { tx.executeSql('DROP TABLE '+tableName); }); }, //打开数据库:一个用户一个数据库 openDB: function (userName){ var dbName= "PM_"+userName; var dbVersion = "1.0" ; var dbSize = 1024 * 1024; var alia = "工程质量管理数据库"; var db = openDatabase(dbName, dbVersion, alia, dbSize); return db; } , //批量根据id删除数据 deleteData: function(db,tableName,id,data,sucessCallback,failCallBack){ if (!db) { return; } if(data.length>0){ var ids = ""; for(var index=0;index<data.length;index++){ if(index==0){ ids="'"+data[index][id]+"'"; }else{ ids+=",'"+data[index][id]+"'"; } } var sql = "delete from " + tableName + " where "+id+" in ("+ids+")"; pmdb.excute(db,sql,[],sucessCallback,failCallBack); } } , // 向数据库插入数据 insertData : function(db,tableName,field,data,sucessCallback,failCallBack) { if (!db) { return; } for (var index = 0; index < data.length; index++) { var values = data[index]; var value = pmdb.newArray(values, field); // 将data数据转成Array var fieldnew=newArrayFilds; var sql = "INSERT INTO " + tableName + " (" + fieldnew.join(",") + ") values " + "(" + new Array(fieldnew.length + 1).join(",?").substr(1) + ")"; pmdb.excute(db,sql, value,sucessCallback,failCallBack); }; // }, // 将data数据转成Array newArray : function(data, filds) { var newArray = new Array(); var k=0; for (i = 0; i < filds.length; i++) { if(i==0){newArrayFilds.length=0} name = filds[i]; var fildData=data[name]; if(fildData!=undefined&&fildData!=""){ if(newArray.length>0){ newArray[k+1] = fildData; newArrayFilds[k+1]=name; k=k+1; }else{ newArray[k] = fildData; newArrayFilds[k]=name; } } } return newArray; } }; var newArrayFilds = new Array();
//建表 var creatTables ={ sqls :function(){ var tables = new Array(2);//表的个数 //基础数据表、参数表 tables[0] = "CREATE TABLE IF NOT EXISTS t_Question (question_id int, project_id string,category_id int,pj_node_code string,location string,description string,cs_id int,fix_requirement string,fix_date datetime,question_priority string,submit_user_id int,submit_date datetime,question_status int,amount number,IsSubmit int )";tables[1] = "CREATE TABLE IF NOT EXISTS t_QuestionUser (question_id string,user_type string,user_id int)";
return tables; } }; 下面是存入时的数据集合:var questionArray = new Array("question_id","project_id","category_id","pj_node_code","location","description","cs_id","fix_requirement","fix_date","question_priority","submit_user_id","submit_date","question_status","amount","IsSubmit");var questionUserArray = new Array("question_id","user_type","user_id");