安卓--SQLite数据库的简单使用(说明+代码)

本文主要探讨了在安卓应用中如何使用SQLite进行数据存储。通过SQLiteOpenHelper创建或打开数据库,并介绍了一个自定义数据库操作类的设计,使应用程序可以方便地进行数据操作。虽然未涉及SQLite的原理,但详细阐述了其实用技巧。

安卓中常用SQLite进行存储,这篇文章不说明SQLite原理(因为我也不懂。。。)只说说使用方法

对数据库打开和操作自然少不了SQLiteOpenHelper的帮助,这里主要介绍SQLiteOpenHelper和自定义中间件在程序中的使用。

数据库、SQLiteOpenHelper、自定义数据库操作类、应用程序 这四个之间的关系如图
这里写图片描述

1 SQLiteOpenHelper
自定义sqlhelper类继承SQLiteOpenHelper,用于创建或打开数据库

public class MyDataBaseHelper extends SQLiteOpenHelper {

    private static final int VERSION = 1;

    public MyDataBaseHelper(Context context, String name, CursorFactory factory,
                            int version) {
        super(context, name, factory, version);

    }

    public MyDataBaseHelper(Context context,String name,int version) {
        this(context,name,null,version);
    }

    public MyDataBaseHelper(Context context,String name) {
        this(context,name,VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

}

2 自定义数据库类
用于实现数据的各种操作,使得应用程序使用时,实例化对象即可调用

public class MyDataBaseUint {
    public static final String DATABASE_NAME = "userinfo_db";

    public static final String DATETIME = "noteinfo";
    public static final String CONTENT = "content";
    private MyDataBaseHelper dbHelper;

    public MyDataBaseUint(Context context) {
        dbHelper = new MyDataBaseHelper(context, DATABASE_NAME);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
    }

    public boolean CreateTable(String tablename) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        String CREATE_TABLE = "CREATE TABLE user" + tablename + "( id INT  IDENTITY(1,1) PRIMARY KEY,"
                + "filename TEXT," + "time TEXT," + "location TEXT," + "contain TEXT)";
        try {
            db.execSQL(CREATE_TABLE);
            return true;
        } catch (Exception e) {
            // TODO: handle exception
            return false;
        }
    }

    public boolean InsertData(String tablename, String[] values) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        String INSERT_DATA = "INSERT INTO user" + tablename + " (filename,time,location,contain)" + " VALUES (\""
                + values[0] + "\",\"" + values[1] + "\",\"" + values[2] + "\",\"" + values[3] + "\")";
        try {
            db.execSQL(INSERT_DATA);
            return true;
        } catch (Exception e) {
            // TODO: handle exception
            return false;
        }
    }

    // 删除数据 返回值true false
    public boolean DeleteData(String tablename, String key, String value) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        String DELETE_DATA = "DELETE FROM user" + tablename + " WHERE " + key + " = \"" + value+"\"";
        try {
            db.execSQL(DELETE_DATA);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    // 更新操作就相当于执行SQL语句当中的update语句
    // UPDATE table_name SET XXCOL=XXX WHERE XXCOL=XX...
    public boolean UpdateData(String tablename, String []values, String key) {

        SQLiteDatabase db = dbHelper.getWritableDatabase();
        String sqlstr="UPDATE user"+tablename
                +" SET "+" filename = \""+values[0]+"\""
                       +", location = \""+values[2]+"\""
                       +", contain = \""+values[3]+"\""
                +" WHERE "+" time = \"" + key+"\"";
        try {
            db.execSQL(sqlstr);
            return true;
        } catch (Exception e) {
            // TODO: handle exception
            return false;
        }
    }

    // 查询数据,返回List<HashMap<String, String>>
    public List<HashMap<String, String>> QueryData(String tablename) {
        List<HashMap<String, String>> datalist = new ArrayList<HashMap<String, String>>();
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        String sqlstr = "SELECT * FROM user" + tablename;
        Cursor cursor = db.rawQuery(sqlstr, null);
        while (cursor.moveToNext()) {
            HashMap<String, String> data = new HashMap<String, String>();
            data.put("filename", cursor.getString(cursor.getColumnIndex("filename")));
            data.put("time", cursor.getString(cursor.getColumnIndex("time")));
            data.put("location", cursor.getString(cursor.getColumnIndex("location")));
            data.put("contain", cursor.getString(cursor.getColumnIndex("contain")));
            datalist.add(data);
        }
        return datalist;
    }
}

//有时间再写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值