Android开发笔记之SQLite的存储方式

安卓数据库知识的小结

数据库是五中存储方式之一. 五中存储方式为

  1. 文件存储
  2. 网络存储
  3. shapePrefrenced存储
  4. SQLite存储
  5. contentProvider存储
    安卓采取的存储方式

1.SQLite存储方式
2.shapePrefrenced存储方式

此处我们先讲解Android SQLite的存储方式

通过列子我们来熟悉SQLite的基本使用方式


//主Activity里面的代码如下
public class MainActivitySql extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_sql);
        initView();
    }
    /***************************
     * 初始化函数
     */
    private void initView(){
        StudentDBDao data = new StudentDBDao(this);
        data.insert("美人鱼", "6亿$", "环保");
        data.insert("蝙蝠侠之黑暗崛起", "12亿$", "小丑的经典战役");
        data.insert("教父1", "15亿$", "经典的教父");
        data.insert("教父2", "12亿$", "经典中再创经典");
        data.insert("教父3", "18亿$", "经典中的衰落");
    }

}

//这个类主要是创建数据库表单和管理数据库
public class StudentOpenHelper extends SQLiteOpenHelper {

    /**
     * 创建另一个数据库的时候使用
     * @param context 参数1--上下文
     * @param name 参数2-要创建的数据库名字
     * @param factory 参数3-游标工厂 通常在创建数据库的时候赋值为null
     * @param version 参数4-代表创建按数据库时候的版本号
     */
    public StudentOpenHelper(Context context, String name, 
            CursorFactory factory, int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    /********************************
     * 创建表格的方法 数据库表格创建的地方
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String createTable = "create table student"
                + " (id integer primary key autoincrement,"
                + "name varchr(10), "
                + "num varchr(2),"
                + " hobby varchr(50))";
        //使用数据库对象db调用执行sql语句,来创建一个表格
        db.execSQL(createTable);
        Log.i("onCreate", "======onCreate========");
    }
    /**
     * 数据库版本号增加的时候调用
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        Log.i("onUpgrade", "======onUpgrade========");
        String createTable = "create table teacher"
                + " (id integer primary key autoincrement,"
                + "name varchr(10), "
                + "num varchr(2),"
                + " hobby varchr(50))";
        db.execSQL(createTable);
    }
    /**
     * 第一次创建数据库的时候使用
     * @param context
     */
    public StudentOpenHelper(Context context) {
        super(context, "movie.db", null, 1);
        // TODO Auto-generated constructor stub
    }
    /**
     * 更新数据库的时候使用
     * @param context
     */
    public StudentOpenHelper(Context context,int version) {
        super(context, "student.db", null, version);
        // TODO Auto-generated constructor stub
    }
}
//把增删改查的方法全部封装在这里,主Activity里面可以new这个类的对象,直接调用这里面的方法,简化主函数,防止主函数的臃肿
public class StudentDBDao {
    StudentOpenHelper helper;
    SQLiteDatabase database;

    public StudentDBDao(Context context) {
        super();
        this.helper = new StudentOpenHelper(context);
    }

    /*****************************
     * 插入数据
     * @param name
     * @param num
     * @param hobby
     ****************************/
    public void insert(String name,String num,String hobby){
        printlLog("insert","启动成功:"+"insert");
        database=helper.getWritableDatabase();
        //类似Map集合的ContentValues类
        ContentValues contentValues = new ContentValues();
        //put方法中键值要与数据库表中的字段值一致
        contentValues.put("name", name);
        contentValues.put("num", num);
        contentValues.put("hobby", hobby);
        database.insert("student", null, contentValues);
        database.close();
    }
    /*********************
     * 谷歌Api实现的删除方法
     * @param num
     *********************/
    public void delete(String num){
        printlLog("delete","启动成功:"+"delete");
        database=helper.getWritableDatabase();
        database.delete("student", "num = ?", new String[]{num});
        database.close();
    }

    /*********************************************************
     * 通过谷歌API实现更新数据库的方法
     * @param num
     *********************************************************/
    public void update(String hobby,String num){
        printlLog("update","启动成功:"+"update");
        database=helper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put("hobby", hobby);
        database.update("student", contentValues,"num = ?", new String[]{num});
        database.close();
    }

    /****************************************************************************
     * 通过谷歌API实现查询的方法
     * @param num
     * @return
     * (String table, String[] columns, String selection, String[] selectionArgs, 
     * String groupBy, String having, String orderBy)
     * columns代表查询的列表,赋值为null为查询所有类,查询指定列名就传列名
     * 参数5,6,7是一些条件排序分组的属性,传为null就可以
     ****************************************************************************/
    public int select(String num){
        printlLog("select","启动成功:"+"select");
        database=helper.getReadableDatabase();
        Cursor cursor = database.query("student", null, "num = ?",
                new String[]{num}, null, null, null);
        return cursor.getCount();
    }
    /*****************************************************************************
     * 打印日志信息的方法
     * @param tag
     * @param msg
     *****************************************************************************/
    public void printlLog(String tag,String msg){
        Log.i(tag, msg);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值