android的SQLite使用

Android内置了数据库

一、 数据库方法介绍

  1. 使用数据库的时候要新建一个帮助类继承SQLiteOpenHelper类,因为SQLiteOpenHelper是一个抽象类;
  2. 实现SQLiteOpenHelper的两个方法onCreate()和onUpgrade(),其中onCreate()用来创建数据库,onUpgrade()用来更新数据库;
  3. SQLiteOpenHelper里有两个实例方法getReadableDatabase()和getWritableDataBase()。第一个方法当数据库不可写入的时候getReadableDatabase()返回的对象只以只读的方式打开数据库,而getWritableDataBase()会出现异常;
  4. 有两个构造方法可以重写,一般选少参数的即可,第一个参数的Context,第二个是自己定义的数据库名,第三个是Curse(一般都是null),第四个是版本号(第一次的时候是个大于0的数);
  5. 生成的文件放在/data/data/< packagename>database/下;

二、 数据库的使用

  1. 要使用的语句是SQLite的语句,例:
create table Book(
		id integer primary key autoincrement,
		auto text,
		price real,
		pages integer,
		name text
)
  1. 新建一个帮助类
public class MyHelper extends SQLiteOpenHelper{
	
	public static String BOOK="create table book(" +
			"id integer primary key autoincrement," +
			"auto text," +
			"price real," +
			"pages integer," +
			"name text)";
	private Context mContext;
	
	public MyHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
		mContext = context;
	}

	
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		db.execSQL(BOOK);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
	}

三、 数据库的升级

  1. 调用onUpgrade(),其中有三个参数,第一个是数据库对象,第二个是旧版本号,第三个是新版本号,一般新版本号要大于旧版本号;
  2. 如果原本有一个表了就会报错,所以可以调用
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL(BOOK);
		db.execSQL(cate);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		db.execSQL("drop table if exists Book");
		db.execSQL("drop table if exists Category");
		onCreate(db);
	}

增删改查

	
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.create:
			dbMyhelpers.getReadableDatabase();
			break;
		case R.id.updateAll:
			dbMyhelpers.getReadableDatabase();
			break;
		case R.id.add:
			SQLiteDatabase db1 = dbMyhelpers.getReadableDatabase();
			db1.beginTransaction();//开启事务
			try {
				if (true) {
					throw new NullPointerException();
				}
			@SuppressWarnings("unused")
			ContentValues values1 = new ContentValues();
			values1.put("name", "The DA");
			values1.put("autor", "Dan Brown");
			values1.put("price",454);
			values1.put("price", 16.95);
			db1.insert("Book", null, values1);
			db1.setTransactionSuccessful();//事务开启启动成功
			break;
			} catch (Exception e) {
				// TODO: handle exception
			}
		case R.id.delet:
			SQLiteDatabase db2 = dbMyhelpers.getReadableDatabase();
			db2.delete("BOOK", "pages>?", new String[]{"500"});
			break;
		case R.id.change:
			SQLiteDatabase db3 = dbMyhelpers.getReadableDatabase();
			ContentValues values3 = new ContentValues();
			values3.put("price", 10.99);
			db3.update("BOOK", values3, "name=?", new String[]{"code"});
			break;
		case R.id.search:
			SQLiteDatabase db4 = dbMyhelpers.getReadableDatabase();
			Cursor cursor = db4.query("BOOK", null,null,null,null,null,null);
			if (cursor.moveToNext()) {
				do {
					String name = cursor.getString(cursor.getColumnIndex("name"));
					String author = cursor.getString(cursor.getColumnIndex("author"));
					int pages = cursor.getInt(cursor.getColumnIndex("pages"));
					double price = cursor.getDouble(cursor.getColumnIndex("price"));
					
				} while (cursor.moveToNext());
			}cursor.close();
			break;
		default:
			break;
		}
		
	}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值