安卓数据库通用增删查改

本文介绍了一种网页与安卓设备上的数据库进行交互的方法,包括查询、插入、更新和删除数据的操作,并以XML格式返回查询结果。

最近有个需求,要让网页调用安卓上面的数据库,有很多张表,就写了个能通用的,让网页自己去传表名、条件,和需要查询的字段,将数据已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();
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值