Browse Source

更新内容:数据库插件完善

chengwb3 9 years ago
parent
commit
25b5312667

+ 108 - 22
display-server/web/biz/js/plugin/database.js

@ -1,4 +1,5 @@
1 1
require(["domReady!","mobile", "util"], function(doc,Mobile) {
2
	new iScroll("content");
2 3
	var dbName = "display";
3 4
	var tableName = "student";
4 5
	//建表语句
@ -15,30 +16,27 @@ require(["domReady!","mobile", "util"], function(doc,Mobile) {
15 16
	});
16 17
	//查询数据
17 18
	$("#select").tap(function() {
18
		var columns = new Wade.DataMap();//查询字段
19
		columns.put("stu_name", "");
20
		columns.put("stu_age", "");
21
		columns.put("stu_sex", "");
19
		var columns=new Array(); //查询字段 可以是个空的数组,也可是是null,这是默认查询字段是*,即全部
20
		columns[0]="stu_name";
21
		columns[1]="stu_age";
22
		columns[2]="stu_sex";
22 23
		
23
		var conds = new Wade.DataMap();	//查询条件
24
		conds.put("STU_SEX", "F");
24
		var conds = new Wade.DataMap();	//查询条件 可以是个空的DataMap(),也可以是null
25
		conds.put("stu_age", "19"); //注意:拼装的条件只能是等于,如:stu_age=19,而不能是stu_age>19
25 26
		
26 27
		WadeMobile.select(dbName, tableName, columns, conds, function(obj){			//查询所有符合条件
27
		//WadeMobile.selectFirst(dbName, tableName, columns, conds, function(obj){	//查询第一条
28 28
			var result = JSON.parse(obj); //解析成JSON
29 29
			var childObjStr = "";		  //子元素
30 30
			$("#tbody").children("tr").remove();//删除表格内容
31
			
32
			for(var i = 0, length = result.length; i < length; i++){
31
			for(var i = 0; i < result.length; i++){
33 32
				childObjStr += "<tr>";
34 33
				var stuItem = result[i];
35
				
36
				//因为从后台取到得值进过hash散列,所以需要通过“查询列”取对应字段值
37
				for(var x = 0, column = columns.keys, len = column.length; x < len; x++){
38
					var columnVal = stuItem[column[x]];//获取字段值
39
					
40
					if(typeof(columnVal) != "undefined")//过滤查询字段中冗余字段(表中不存在的字段)
34
				var columnVal;
35
				for(var j=0; j<columns.length; j++){
36
					columnVal = stuItem[columns[j]];//获取字段值
37
					if(typeof(columnVal) != "undefined"){//过滤查询字段中冗余字段(表中不存在的字段)
41 38
						childObjStr += "<td>" + columnVal + "</td>";
39
					}
42 40
				}
43 41
				childObjStr += "</tr>";
44 42
			}
@ -47,8 +45,60 @@ require(["domReady!","mobile", "util"], function(doc,Mobile) {
47 45
		});
48 46
	});
49 47
	
48
	//查询第一条数据
49
	$("#selectFirst").tap(function() {
50
		var columns=new Array(); //查询字段 可以是个空的数组,也可是是null,这是默认查询字段是*,即全部
51
		columns[0]="stu_name";
52
		columns[1]="stu_age";
53
		columns[2]="stu_sex";
54
		
55
		var conds = new Wade.DataMap();	//查询条件 可以是个空的DataMap(),也可以是null
56
		conds.put("stu_age", "19"); //注意:拼装的条件只能是等于,如:stu_age=19,而不能是stu_age>19
57
		
58
		WadeMobile.selectFirst(dbName, tableName, columns, conds, function(obj){	//查询第一条
59
			var result = JSON.parse(obj); //解析成JSON
60
			var childObjStr = "";		  //子元素
61
			$("#tbody").children("tr").remove();//删除表格内容
62
			childObjStr += "<tr>";
63
			var columnVal;
64
			for(var j=0; j<columns.length; j++){
65
				columnVal = result[columns[j]];//获取字段值
66
				if(typeof(columnVal) != "undefined"){//过滤查询字段中冗余字段(表中不存在的字段)
67
					childObjStr += "<td>" + columnVal + "</td>";
68
				}
69
			}
70
			childObjStr += "</tr>";
71
			//将子元素节点添加到表格中
72
			$("#tbody").append($(childObjStr));
73
		});
74
	});
75
	
76
	//查询数据  selectExecSQL
77
	$("#selectExecSQL").tap(function() {
78
		var sql = "select * from " + tableName + " where stu_name=? and stu_age=? and stu_sex=?";
79
		var selectionArgs=new Array(); //查询字段 可以是个空的数组,也可是是null,这是默认查询字段是*,即全部
80
		selectionArgs[0]="JACK1";
81
		selectionArgs[1]="19";
82
		selectionArgs[2]="10";
83
		
84
		WadeMobile.execSQL(dbName, sql, selectionArgs, function(obj){			//查询所有符合条件
85
			var result = JSON.parse(obj); //解析成JSON
86
			var childObjStr = "";		  //子元素
87
			$("#tbody").children("tr").remove();//删除表格内容
88
			for(var i = 0; i < result.length; i++){
89
				childObjStr += "<tr>";
90
				var name = "<td>" + result[i].stu_name + "</td>";
91
				var age = "<td>" + result[i].stu_age + "</td>";
92
				var sex = "<td>" + result[i].stu_sex + "</td>";
93
				childObjStr += name + age + sex + "</tr>";
94
			}
95
			//将子元素节点添加到表格中
96
			$("#tbody").append($(childObjStr));
97
		});
98
	});
99
	
50 100
	//增加数据
51
	var insertSql = "INSERT INTO " + tableName + " (stu_no, stu_name, stu_age, stu_sex) VALUES (:VSTU_NO, :VSTU_NAME, :VSTU_AGE, :VSTU_SEX)";
101
	/*var insertSql = "INSERT INTO " + tableName + " (stu_no, stu_name, stu_age, stu_sex) VALUES ('2015003','JACK3','10','F')";
52 102
	insertSql = transform(insertSql);
53 103
	$("#insert").tap(function() {
54 104
		var param = new Wade.DataMap();
@ -57,15 +107,26 @@ require(["domReady!","mobile", "util"], function(doc,Mobile) {
57 107
		param.put("STU_AGE", "19");
58 108
		param.put("STU_SEX", "F");
59 109
		
60
		Mobile.execSQL(dbName, insertSql, param, function(result){
110
		Mobile.execSQL(dbName, insertSql, null, function(result){
111
			alert(result);
112
		});
113
	});*/
114
	
115
	//新增数据
116
	$("#insert").tap(function() {
117
		var param = new Wade.DataMap();
118
		param.put("STU_NO", "2015004");
119
		param.put("STU_NAME", "JACK4");
120
		param.put("STU_AGE", "19");
121
		param.put("STU_SEX", "M");
122
		Mobile.insert(dbName, tableName, param, function(result){
61 123
			alert(result);
62 124
		});
63 125
	});
64 126
	
65 127
	//修改数据
66
	var updateSql = "UPDATE " + tableName + " SET stu_name = :VSTU_NAME, stu_age = :VSTU_AGE WHERE stu_no = :VSTU_NO";
128
	/*var updateSql = "UPDATE " + tableName + " SET stu_name = :VSTU_NAME, stu_age = :VSTU_AGE WHERE stu_no = :VSTU_NO";
67 129
	updateSql = transform(updateSql);
68
	
69 130
	$("#update").tap(function() {
70 131
		var param = new Wade.DataMap();
71 132
		param.put("STU_NAME", "Dave");
@ -75,8 +136,22 @@ require(["domReady!","mobile", "util"], function(doc,Mobile) {
75 136
		Mobile.execSQL(dbName, updateSql, param, function(result){
76 137
			alert(result);
77 138
		});
139
	});*/
140
	
141
	//修改数据
142
	$("#update").tap(function() {
143
		var param = new Wade.DataMap();
144
		param.put("STU_NAME", "Dave");
145
		
146
		var conds = new Wade.DataMap();
147
		conds.put("STU_NO", "2015004");
148
		
149
		Mobile.update(dbName, tableName, param, conds, function(result){
150
			alert(result);
151
		});
78 152
	});
79
	//删除数据
153
	
154
	/*//删除数据
80 155
	var delteSql = "DELETE FROM " + tableName + " WHERE stu_no = 2015001";
81 156
	delteSql = transform(delteSql);
82 157
	
@ -86,7 +161,18 @@ require(["domReady!","mobile", "util"], function(doc,Mobile) {
86 161
		Mobile.delete(dbName, delteSql, param, function(result){
87 162
			alert(result);
88 163
		});
164
	});*/
165
	
166
	//删除数据
167
	$("#delete").tap(function() {
168
		var param = new Wade.DataMap();
169
		param.put("STU_NO", "2015004");
170
		
171
		Mobile.delete(dbName, tableName, param, function(result){
172
			alert(result);
173
		});
89 174
	});
175
	
90 176
	//删除表格
91 177
	var dropSql = "DROP TABLE " + tableName ;
92 178
	$("#drop").tap(function() {
@ -98,7 +184,7 @@ require(["domReady!","mobile", "util"], function(doc,Mobile) {
98 184
	
99 185
	//特殊符号过滤
100 186
	function transform(sql){
101
	
102
		return sql.replace(/=/g, ":3D").replace(/\?/g ,":3F").replace(/,/g, ":9A");
187
		return sql;
188
//		return sql.replace(/=/g, ":3D").replace(/\?/g ,":3F").replace(/,/g, ":9A");
103 189
	};
104 190
});

+ 32 - 5
display-server/web/res/js/mobile/expand-mobile.js

@ -194,23 +194,50 @@ define(["require"],function(require) {
194 194
				//将日志输出至LogCat控制台(异步)
195 195
				execute("logCat",[msg,title],err);
196 196
			},execSQL:function(dbName,sql,bindArgs,callback,err){
197
				if(bindArgs==undefined){
198
					bindArgs = new Array();
199
				}
197 200
				storageCallback("execSQL",callback);
198 201
				execute("execSQL",[dbName,sql,bindArgs],err);
199 202
			},insert:function(dbName,table,datas,callback,err){
203
				if(datas==undefined){
204
					datas = new Wade.DataMap();
205
				}
200 206
				storageCallback("insert",callback);
201
				execute("insert",[dbName,table,datas],err);
207
				execute("insert",[dbName,table,datas.toString()],err);
202 208
			},delete:function(dbName,table,datas,callback,err){
209
				if(datas==undefined){
210
					datas = new Wade.DataMap();
211
				}
203 212
				storageCallback("delete",callback);
204
				execute("delete",[dbName,table,datas],err);
213
				execute("delete",[dbName,table,datas.toString()],err);
205 214
			},update:function(dbName,table,datas,conds,callback,err){
215
				if(datas==undefined){
216
					datas = new Wade.DataMap();
217
				}
218
				if(conds==undefined){
219
					conds = new Wade.DataMap();
220
				}
206 221
				storageCallback("update",callback);
207
				execute("update",[dbName,table,datas,conds],err);
222
				execute("update",[dbName,table,datas.toString(),conds.toString()],err);
208 223
			},select:function(dbName,table,columns,conds,callback,err){
224
				if(columns==undefined){
225
					columns = new Array();
226
				}
227
				if(conds==undefined){
228
					conds = new Wade.DataMap();
229
				}
209 230
				storageCallback("select",callback);
210
				execute("select",[dbName,table,columns,conds],err);
231
				execute("select",[dbName,table,columns,conds.toString()],err);
211 232
			},selectFirst:function(dbName,table,columns,conds,callback,err){
233
				if(columns==undefined){
234
					columns = new Array();
235
				}
236
				if(conds==undefined){
237
					conds = new Wade.DataMap();
238
				}
212 239
				storageCallback("selectFirst",callback);
213
				execute("selectFirst",[dbName,table,columns,conds],err);
240
				execute("selectFirst",[dbName,table,columns,conds.toString()],err);
214 241
			},registerForPush:function(account,callback,err){
215 242
				storageCallback("registerForPush",callback);
216 243
				execute("registerForPush",[account],err);

+ 12 - 0
display-server/web/template/webapp/plugin/Database.html

@ -83,6 +83,18 @@
83 83
					<div class="fn fn-2" id="select">查</div>
84 84
				</div>
85 85
			</li>
86
			<li id="progressBar">
87
				<div class="content">
88
					<div class="main">一条数据</div>
89
					<div class="fn fn-2" id="selectFirst">查</div>
90
				</div>
91
			</li>
92
			<li id="progressBar">
93
				<div class="content">
94
					<div class="main">查询execSQL数据</div>
95
					<div class="fn fn-2" id="selectExecSQL">查</div>
96
				</div>
97
			</li>
86 98
		</ul>
87 99
	</div>
88 100
</div>

+ 71 - 26
wade-mobile-func/src/com/wade/mobile/func/MobileDB.java

@ -1,14 +1,18 @@
1 1
package com.wade.mobile.func;
2 2

3 3
import org.json.JSONArray;
4
import org.json.JSONException;
4 5

5 6
import com.ailk.common.data.IData;
6 7
import com.ailk.common.data.IDataset;
7 8
import com.ailk.common.data.impl.DataMap;
9
import com.google.zxing.common.StringUtils;
10
import com.litesuits.http.data.Json;
8 11
import com.wade.mobile.common.db.BasicDao;
9 12
import com.wade.mobile.common.db.DBHelper;
10 13
import com.wade.mobile.frame.IWadeMobile;
11 14
import com.wade.mobile.frame.plugin.Plugin;
15
import com.wade.mobile.util.StringUtil;
12 16

13 17
public class MobileDB extends Plugin {
14 18
	private static final String MESSAGE_SEPARATOR = "\\|\\|";
@ -23,12 +27,16 @@ public class MobileDB extends Plugin {
23 27
	public void execSQL(JSONArray param) throws Exception {
24 28
		String dbName = param.getString(0);
25 29
		String sql = param.getString(1);
26
		String bindArgs = param.getString(2);
27
		if(isNull(bindArgs)){
28
			execSQL(dbName, sql, null);
29
		}else{
30
			execSQL(dbName, sql, bindArgs.split(MESSAGE_SEPARATOR));
31
		}
30
		
31
		String bindArgs[];
32
        JSONArray jsonArray = param.getJSONArray(2);
33
        if (jsonArray == null || jsonArray.length() <= 0) {
34
            bindArgs = null;
35
        }
36
        else {
37
            bindArgs = this.jsonArrayToStringArrayUtil(jsonArray);
38
        }
39
		execSQL(dbName, sql, bindArgs);
32 40
	}
33 41
	
34 42
	public void execSQL(String dbName,String sql,Object[] bindArgs) throws Exception {
@ -113,22 +121,57 @@ public class MobileDB extends Plugin {
113 121
		}
114 122
	}
115 123
	
116
	/**
117
	 * 查询操作
118
	 */
124
    /**
125
     * @Title: select
126
     * @Description: 查询操作
127
     * @author 程文斌
128
     * @param param
129
     * @throws Exception
130
     * @throws
131
     */
119 132
	public void select(JSONArray param) throws Exception {
120 133
		String dbName = param.getString(0);
121 134
		String table = param.getString(1);
122
		//String columns[] = param.getString(2).split(MESSAGE_SEPARATOR);
123
		String columns[] = {"stu_name", "stu_age", "stu_sex"};
124
		String conds = param.getString(3);
125
		conds = null;
126
		if(isNull(conds)){
127
			conds = "{\"1\":1}"; //条件1=1
135
		String columns[];
136
		JSONArray jsonArray = param.getJSONArray(2);
137
		if (jsonArray == null || jsonArray.length() <= 0) {
138
		    columns = new String[] { "*" };
128 139
		}
129
		select(dbName, table, columns, new DataMap(conds));
140
		else {
141
		    columns = this.jsonArrayToStringArrayUtil(jsonArray);
142
		}
143
		String conds = param.getString(3);
144
		this.select(dbName, table, columns, new DataMap(conds));
130 145
	}
131 146
	
147
    /**
148
     * @Title: jsonArrayToStringArrayUtil
149
     * @Description: JsonArray转化String[]格式
150
     * @author 程文斌
151
     * @param jsonArray
152
     * @return
153
     * @throws JSONException
154
     * @throws
155
     */
156
	public String[] jsonArrayToStringArrayUtil(JSONArray jsonArray) throws JSONException {
157
        String[] result = new String[jsonArray.length()];
158
        for (int i = 0; i < jsonArray.length(); i++) {
159
            result[i] = jsonArray.getString(i);
160
        }
161
        return result;
162
	}
163
	
164
    /**
165
     * @Title: select
166
     * @Description: 查询操作实现
167
     * @author 程文斌
168
     * @param dbName
169
     * @param table
170
     * @param columns
171
     * @param conds
172
     * @throws Exception
173
     * @throws
174
     */
132 175
	public void select(String dbName,String table,String columns[],IData conds) throws Exception {
133 176
		BasicDao dao = new BasicDao(context, dbName);
134 177
		try{
@ -140,17 +183,19 @@ public class MobileDB extends Plugin {
140 183
	}
141 184
	
142 185
	/**
143
	 * 查询第一行
144
	 */
186
	* @Title: selectFirst
187
	* @Description: 查询第一行
188
	* @author 程文斌
189
	* @param param
190
	* @throws Exception
191
	* @throws
192
	*/
145 193
	public void selectFirst(JSONArray param) throws Exception {
146
		String dbName = param.getString(0);
147
		String table = param.getString(1);
148
		String columns[] = param.getString(2).split(MESSAGE_SEPARATOR);
149
		String conds = param.getString(3);
150
		if(isNull(conds)){
151
			conds = "{\"1\":1}"; //条件1=1
152
		}
153
		selectFirst(dbName, table, columns, new DataMap(conds));
194
	    String dbName = param.getString(0);
195
        String table = param.getString(1);
196
        String columns[] = this.jsonArrayToStringArrayUtil(param.getJSONArray(2));
197
        String conds = param.getString(3);
198
        this.selectFirst(dbName, table, columns, new DataMap(conds));
154 199
	}
155 200
	
156 201
	/*public void selectFirst(String dbName,String sql,String selectionArgs[]) throws Exception {