Android中的数据存储之数据库存储

Android中的数据库存储包括SQLite、GreenDao等轻量级的数据库存储方式。本文主要介绍SQLite数据库的存储方式。

SQLite是一种非常流行的嵌入式数据库,是由C语言编写而成,是一款轻型关系型数据库,支持SQL,支持多种操作系统,完全独立运行,没有依赖性。SQLite是一个嵌入型的轻量级数据库,适合小数据量,而大型数据库独立运行在数据库服务器上,适合大数据量级别,大型数据库通常以网络的方式对外提供服务。

1、SQLite数据库的使用:

  1、自定义类继承SQLiteOpenHelper
  2、继承onCreate方法,在此方法中使用SQLiteDatabase对象创建表格
public class MySQLiteOpenHelper extends SQLiteOpenHelper{

    /**
     *
     * @param context 	上下文
     * @param name		所需要创建的数据库的名称,创建数据库保默认保存在/data/data/packageName/databases/
     * @param factory	Cursor的工厂类,一般穿null值就可以,使用系统默认的CursorFactory类
     * @param version	所创建的数据库的版本
     */
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    /**
     * 当数据库被创建时,此方法被回调
     * 通过系统传入的db对象, 在此方法中创建数据库表格
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table if not exists person(_id integer primary key "
                + "autoincrement, name, weight)");
    }

    /**
     * 数据库版本升级时被回调
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

3、通过SQLiteOpenHelper类获取数据库的链接对象SQLiteDatabase对象

MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this, "my_db", null, 1);
SQLiteDatabase database = helper.getReadableDatabase();

4、通过SQLiteDatabase对象对数据进行增删改查操作

public void btnClicked(View view) {
		switch (view.getId()) {
		case R.id.btnInsert:
			//database.execSQL("insert into person('name', 'weight') values('三胖','80')");
			ContentValues insertValues = new ContentValues();
			insertValues.put("name", "习主席");
			insertValues.put("weight", "140");
			database.insert(
					"person",  //表名
					null,
					insertValues);  //插入每一行所指定的列值
			break;
		case R.id.btnUpdate:
			//database.execSQL("update person SET weight='200' where _id='3'");
			ContentValues updateValues = new ContentValues();
			updateValues.put("weight", "300");  //SET weight='300'
			database.update("person", updateValues, "name=?", new String[]{"三胖"});
			break;
		case R.id.btnDelete:
			//database.execSQL("delete from person where _id='6'");
			database.delete("person", "name=?", new String[]{"三胖"});
			break;
		case R.id.btnQuery:
			/**
			 * rawQuery进行数据库的查询
			 * 第一个参数:SQL语句,可以包含?占位符
			 * 第二个参数:String数组,其中元素会将SQL语句中的?进行替换
			 */
			/**Cursor cursor = database.rawQuery(
					"select * from person where _id=?", new String[]{"1"});*/
			
			Cursor cursor = database.query(
					"person"	,	//表名
					 new String[]{"_id", "name", "weight"},  //需要查询返回的列的数组 
					 null,		//查询的where语句,不能再添加where关键字
					 null, //替换查询语句中的占位符,元素个数需要与selection语句中的?个数一致
					 null, null, null);
			
			/*
			 * 使用Cursor.moveToNext方法可以对Cursor进行遍历
			 */
			while(cursor.moveToNext()) {
				String name = cursor.getString(cursor.getColumnIndex("name"));
				String weight = cursor.getString(cursor.getColumnIndex("weight"));
				android.util.Log.e("danny", "name is " + name + " weight is " + weight);
			}
			break;

		default:
			break;
		}
	}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页