最近有个需求,要让网页调用安卓上面的数据库,有很多张表,就写了个能通用的,让网页自己去传表名、条件,和需要查询的字段,将数据已XML格式给网页。方法如下:
/** * 查询某个表中的数据 * * @param context * @param table 要查询的表名 * @param condition 查询的条件 pzh = '4403041094175024' and car_num = '测试' order by id desc * @param strs 要查询的字段名 * @return */ public static String getTableDataXML(Context context, String table, String condition, String... strs) { XCZF_SQLiteOpenHelper liteOpenHelper = new XCZF_SQLiteOpenHelper( context); SQLiteDatabase database = liteOpenHelper.getWritableDatabase(); String sql = ""; String xml = ""; if (condition != null && !condition.equals("")) { sql = "SELECT * FROM " + table + " where " + condition; } else { sql = "SELECT * FROM " + table; } if (strs != null && strs.length > 0) { Cursor cursor = database.rawQuery(sql, null); while (cursor.moveToNext()) { String data = ""; for (int i = 0; i < strs.length; i++) { String value = ""; try { value = cursor.getString(cursor.getColumnIndex(strs[i])); } catch (Exception e) { e.printStackTrace(); return strs[i] + "没有该字段"; } if (value != null) { data = data + "<" + strs[i] + ">" + value + "</" + strs[i] + ">"; } } LogUtils.e(xml); if (!data.equals("")) xml = xml + "<item>" + data + "</item>"; } cursor.close(); } database.close(); liteOpenHelper.close(); return xml; }
/** * @param context * @param table 插入的表名 * @param id 主键id的字段名,即表的字段名,不是值 * @param strs 插入的字段和对应的值,第一个参数为字段名,第二个参数为第一个参数的值 ,第三个参数也为字段名,第四个参数为第三个参数的值 如:"pzh , 4403041094175024 , car_num , 测试" */ public static void insertTableData(Context context, String table, String id, String... strs) { XCZF_SQLiteOpenHelper liteOpenHelper = new XCZF_SQLiteOpenHelper( context); SQLiteDatabase database = liteOpenHelper.getWritableDatabase(); ContentValues values = new ContentValues(); if (strs != null && strs.length > 0 && strs.length % 2 == 0) { for (int i = 0; i < strs.length; ) { LogUtils.e(strs[i]); LogUtils.e(strs[i + 1]); values.put(strs[i], strs[i + 1]); i = i + 2; } database.insert(table, id, values); } database.close(); liteOpenHelper.close(); } /** * 更新某个表中的某条数据 * * @param context * @param table 表名 * @param condition 更新条件 如: pzh = '4403041094175024' and car_num = '测试' * @param strs */ public static void updateTableData(Context context, String table, String condition, String... strs) { XCZF_SQLiteOpenHelper liteOpenHelper = new XCZF_SQLiteOpenHelper( context); SQLiteDatabase database = liteOpenHelper.getWritableDatabase(); ContentValues values = new ContentValues(); if (strs != null && strs.length > 0 && strs.length % 2 == 0) { for (int i = 0; i < strs.length; ) { LogUtils.e(strs[i]); LogUtils.e(strs[i + 1]); values.put(strs[i], strs[i + 1]); i = i + 2; } database.update(table, values, condition, null); } database.close(); liteOpenHelper.close(); } /** * @param context * @param table 表名 * @param condition 删除条件 如: pzh = '4403041094175024' and car_num = '测试' */ public static void deleteTableData(Context context, String table, String condition) { XCZF_SQLiteOpenHelper liteOpenHelper = new XCZF_SQLiteOpenHelper( context); SQLiteDatabase database = liteOpenHelper.getWritableDatabase(); ContentValues values = new ContentValues(); database.delete(table, condition, null); database.close(); liteOpenHelper.close(); }
本文介绍了一种网页与安卓设备上的数据库进行交互的方法,包括查询、插入、更新和删除数据的操作,并以XML格式返回查询结果。
6万+

被折叠的 条评论
为什么被折叠?



