Android sqlite使用

1.先创建一个base类

public class MyDatabaseHelper extends SQLiteOpenHelper {

    public MyDatabaseHelper(Context context) {
        super(context, "SQLite.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

2.具体操作

public class ImageTable {
    //private final String preTableName="t_image_";
    private SQLiteDatabase db;
    private Context context;
    public ImageTable(Context context) {
        this.context=context;
        MyDatabaseHelper myDatabaseHelper = new MyDatabaseHelper(context);
        db = myDatabaseHelper.getReadableDatabase();
    }
    //创建名为tableName的表
    public void createTable(String tableName) throws Exception{
        //tableName=preTableName + tableName;
        final String CREATE_TABLE_SQL = "create table "+tableName+"("+
                "_id integer primary key autoincrement,"+
                "imageName char,"+
                "anchor char"+
                ")";
            if (!tabbleIsExist(tableName)) {
                db.execSQL(CREATE_TABLE_SQL);
            }
    }
    //在tableName表中插入一行
    public void insertRow(String tableName,String imageName,String anchor) {
        //tableName=preTableName + tableName;
        if (tabbleIsExist(tableName)) {
            String sql = "insert into " + tableName + " (imageName,anchor) values(?,?)";
            db.execSQL(sql, new Object[]{imageName,anchor});
        }else {
            log(tableName+context.getResources().getString(R.string.table_no_exist));
        }
    }

    //删除tableName表里的第id行的内容
    public void delete(String tableName,int id) {
        if (tabbleIsExist(tableName)) {
            String sql = "delete from " + tableName + " where _id = ?";
            db.execSQL(sql, new Object[]{id});
        }else {
            log(tableName+context.getResources().getString(R.string.table_no_exist));
        }
    }
    //判断tableName表是否存在
    private boolean tabbleIsExist(String tableName) {
        //tableName="t_" + tableName;
        boolean result = false;
        if (tableName == null) {
            return false;
        }
        Cursor cursor = null;
        try {
            String sql = "select count(*) as c from Sqlite_master where type ='table' and lower(name) =lower('" + tableName.trim() + "')";
            cursor = db.rawQuery(sql, null);
            if (cursor != null) {
                if (cursor.moveToNext()) {
                    int count = cursor.getInt(0);
                    if (count > 0) {
                        result = true;
                    }
                }
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return result;
    }

    //遍历tableName表中的所有行
    public List<ImageTableRow> queryDatas(String tableName) {
        List<ImageTableRow> data = new ArrayList<ImageTableRow>();
        //tableName=preTableName + tableName;
        String sql = "select * from "+tableName;
        log("sql:"+sql);
        if (tabbleIsExist(tableName)) {
            Cursor cursor = db.rawQuery(sql, null);
            if (cursor != null) {
                while (cursor.moveToNext()) {
                    ImageTableRow row = new ImageTableRow(cursor.getString(cursor.getColumnIndex("imageName")),
                                                cursor.getString(cursor.getColumnIndex("anchor")));
                    data.add(row);
                }
                cursor.close();
            }
        } else {
            log(tableName+context.getResources().getString(R.string.table_no_exist));
        }
        return data;
    }
    //遍历所有表名
    public List<String> queryAllTableNames() {
        List<String> data = new ArrayList<String>();
        String sql = "select name from sqlite_master where type='table' order by name";
        Cursor cursor = db.rawQuery(sql, null);
        while(cursor.moveToNext()){
            //遍历出表名
            String name = cursor.getString(0);
            if (!"android_metadata".equals(name)&&!"sqlite_sequence".equals(name)) {//数据库自带的表不进行显示
                data.add(name);
            }
        }
        return data;
    }
    public String queryLastTableNames() {
        String name = null;
        List<String> data = new ArrayList<String>();
        String sql = "select name from sqlite_master where type='table' order by name desc limit 0,1";
        Cursor cursor = db.rawQuery(sql, null);
        while(cursor.moveToNext()){
            //遍历出表名
            name = cursor.getString(0);
        }
        return name;
    }

    //删除tableName表
    public void dropTable(String tableName) {
        final String DROP_TABLE_SQL = "drop table "+tableName;
        db.execSQL(DROP_TABLE_SQL);
    }
    /**
     *clearTable 清空表中的数据
     */
    public void clearTable(String tableName){
        if (tableIsExist(tableName)) {
            String sql = "delete from " + tableName;
            db.execSQL(sql);
            sql = "update sqlite_sequence SET seq = 0 where name ='"+tableName+"'";//自增长ID为0
            db.execSQL(sql);
        } else {
            log(tableName + context.getResources().getString(R.string.table_no_exist));
        }
    }
    private void log(String str) {
        Log.i("chenxi", str + " @"+getClass().getSimpleName());
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值