• Sencha Touch 2 结合HTML5的本地存储创建数据库实现增、删、改、查


    大家好!我是范范。本人刚接触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();

    下面是建表的代码:CreateTable.js

    //建表
    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");




  • 相关阅读:
    Sql 行转换列(列转换行), JavaScript解决思路
    c# 异步线程
    C# 读取数据库存储过程返回值 笔记
    利用UtilityLibrary.dll WeifenLuo.WinFormsUI.Docking.dll控件创建工具栏效果
    关于C#Winform线程调用窗体的使用方法以及窗体的单一显示
    通过调用API函数实现的无边框窗体的拖拽,比判断坐标更快捷
    ubuntu下安装redis
    ubuntu下安装beanstalkd
    preg_match_all 执行一个全局正则表达式匹配
    mongodb的安装和进入
  • 原文地址:https://www.cnblogs.com/fyq891014/p/3294772.html
Copyright © 2020-2023  润新知