安卓数据库工具类

本文介绍了一个用于Android应用的SQLite数据库工具类,该类提供了创建、插入、查询、更新和删除等基本数据库操作的方法,并通过事务处理提高了批量插入的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.example.wpj.myapplication.sql;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
import java.util.List;
/**
 * Created by wpj on 2017/2/27.
 * 
 */
public class DBUtil extends SQLiteOpenHelper {
    private static final String DB_NAME = "TVBank.db";
    private static final int VERSION = 1;
    //SQL
    private static final String Create_Table = "create table login_info \n" +
            "(\n" +
            "   log_id               varchar2(50)                   not null,\n" +
            "   account_name         varchar2(20)                   null,\n" +
            "   account_password     varchar2(20)                   null,\n" +
            "   state                int                            null,\n" +
            "   device_id            varchar2(50)                   null,\n" +
            "   login_time           date                           null,\n" +
            "   constraint PK_LOGIN_INFO primary key (log_id)\n" +
            ");";
    private SQLiteDatabase db;
    public DBUtil(Context context) {
        super(context, DB_NAME, null, VERSION);
    }
    /**
     * 
     * 
     * @param sqLiteDatabase
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
        Log.e("onUpgrade""," + oldVersion + "--->" + newVersion);
        //db.execSQL("alter table info add money varchar(20)");
    }
    /**
     * 
     * 
     * @param sqLiteDatabase
     */
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        this.db = sqLiteDatabase;
        sqLiteDatabase.execSQL(Create_Table);
        Log.e("CreateDB""Create " + DB_NAME);
    }
    /**
     * DB
     * 
     * @return
     */
    private SQLiteDatabase getDb() {
        if (db == null)
            db = getWritableDatabase();
        return db;
    }
    /**
     * DB
     */
    public void close() {
        if (db != null)
            db.close();
    }
    /**
     * 
     * 
     * @param table
     * @param values
     * @return
     */
    public long insert(String table, ContentValues values) {
        db = getDb();
        return db.insert(table, null, values);
    }
    /**
     * 
     * 使
     * @param table
     * @param columns
     * @param values
     * @return
     */
    public boolean insertMulti(String table, String[] columns, List<String[]> values) {
        db = getDb();
        try {
            String columnSql = "";
            String valuesSql = "";
            for (String column : columns) {
                columnSql = columnSql + column + ",";
                valuesSql = valuesSql + "?,";
            }
            StringBuilder sb = new StringBuilder();
            sb.append("insert into ");
            sb.append(table);
            sb.append("(");
            sb.append(columnSql.substring(0, columnSql.length() - 1));
            sb.append(") values (");
            sb.append(valuesSql.substring(0, valuesSql.length() - 1));
            sb.append(")");
            String sql = sb.toString();
            //---------------------------------------------
            SQLiteStatement stat = db.compileStatement(sql);
            db.beginTransaction();
            for (String[] value : values) {
                for (int i = 0; i < value.length; i++) {
                    stat.bindString(i + 1, value[i]);
                }
                long result = stat.executeInsert();
                if (result < 0) {
                    return false;
                }
            }
            //
            db.setTransactionSuccessful();
            //---------------------------------------------
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            db.endTransaction();
        }
        return true;
    }
    /**
     * 
     *
     * @param distinct
     * @param table
     * @param columns
     * @param selection-selectwhere
     * @param selectionArgs-selection
     * @param groupBy
     * @param having
     * @param orderBy
     * @param limit-
     * @return
     */
    public Cursor query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) {
        db = getDb();
        return db.query(distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);
    }
    /**
     * 
     *
     * @param sql
     * @param args
     * @return
     */
    public Cursor query(String sql, String[] args) {
        db = getDb();
        return db.rawQuery(sql, args);
    }
    /**
     * 
     *
     * @param table
     * @param values
     * @param whereClause
     * @param whereArgs
     * @return
     */
    public int update(String table, ContentValues values, String whereClause, String[] whereArgs) {
        db = getDb();
        return db.update(table, values, whereClause, whereArgs);
    }
    /**
     * 
     *
     * @param table
     * @param whereClause
     * @param whereArgs
     * @return
     */
    public int delete(String table, String whereClause, String[] whereArgs) {
        db = getDb();
        return db.delete(table, whereClause, whereArgs);
    }
    /**
     * sql
     *
     * @param sql
     */
    public void excSQL(String sql) {
        db = getDb();
        db.execSQL(sql);
    }
    /**
     * sql
     *
     * @param sql
     * @param bindArgs
     */
    public void excSQL(String sql, Object[] bindArgs) {
        db = getDb();
        db.execSQL(sql, bindArgs);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值