Android 数据库详解 SQLiteOpenHelper

 private static final String DB_NAME = "user.db";
	private static final String TABLE_NAME = "t_user";
	private UserSqliteOpenHelper helper;
	private ArrayList<User> al = new ArrayList<User>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.act_db);

		helper = new UserSqliteOpenHelper(this, DB_NAME, null, 1);
	}


// 创建数据库
	public void createDB(View view) {
		// 如果数据库还不存在 会执行onCreate()方法并获取数据库对象, 如果已存在会直接得到当前数据库(不执行onCreate)
		SQLiteDatabase db = helper.getWritableDatabase();
		db.close();
	}

	// 使用sql语句添加数据
	public void insert1(View view) {
		SQLiteDatabase db = helper.getWritableDatabase();
		String sql = "insert into t_user(c_name,c_age,c_phone) values (?,?,?)";
		db.execSQL(sql, new Object[] { "钢铁侠", 40, "999" });
		// 关闭数据库
		db.close();
	}

	// 使用Android自带api添加数据
	public void insert2(View view) {
		SQLiteDatabase db = helper.getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put("c_name", "蜘蛛侠");
		values.put("c_age", 18);
		values.put("c_phone", "888");
		// 参数1:表名 参数2:如果要求传的每个字段都不为null的话就传null, 参数3:类似双列集合,用来设置需要插入数据的内容
		// 返回值:插入成功后 会将插入的新数据对应的id返回,如果返回-1代表插入失败
		long l = db.insert(TABLE_NAME, null, values);
		Toast.makeText(this, "" + l, Toast.LENGTH_SHORT).show();
		db.close();
	}

	// 使用sql语句删除数据
	public void delete1(View view) {
		SQLiteDatabase db = helper.getWritableDatabase();
		String sql = "delete from t_user where c_age = ?";
		db.execSQL(sql, new Object[] { 40 });
		db.close();
	}

	// 使用Android自带api删除数据
	public void delete2(View view) {
		SQLiteDatabase db = helper.getWritableDatabase();
		// int i = db.delete(TABLE_NAME, null, null);//全删
		// 参数1:表名 参数2:删除的筛选条件 参数3:?的实际值 返回值:删除数据的条数
		int i = db.delete(TABLE_NAME, "c_phone = ?", new String[] { "888" });
		Toast.makeText(this, "" + i, Toast.LENGTH_SHORT).show();
		db.close();
	}

	// 使用sql语句修改数据
	public void update1(View view) {
		SQLiteDatabase db = helper.getWritableDatabase();
		String sql = "update t_user set c_phone = ? where c_name = ?";
		db.execSQL(sql, new Object[] { "111", "钢铁侠" });
		db.close();
	}

	// 使用Android自带api修改数据
	public void update2(View view) {
		SQLiteDatabase db = helper.getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put("c_name", "浩克");
		// 参数1:表名 参数2:需要设置的新的字段和值 参数3:筛选条件 参数3:?的实际值 返回值:成功修改的数据条数
		int i = db.update(TABLE_NAME, values, "c_age > ?",
				new String[] { 19 + "" });
		Toast.makeText(this, "" + i, Toast.LENGTH_SHORT).show();
		db.close();
	}

	// 使用sql语句查询数据
	public void query1(View view) {
		SQLiteDatabase db = helper.getWritableDatabase();
		String sql = "select * from t_user";
		Cursor cursor = db.rawQuery(sql, null);
		// 是否有下一条数据
		while (cursor.moveToNext()) {
			// 获取索引为0那一列的数据 其实是id
			int id = cursor.getInt(0);
			// 获取索引为1那一列的数据 其实是name
			String name = cursor.getString(1);
			// 获取索引为2那一列的数据 其实是age
			int age = cursor.getInt(2);
			// 获取索引为3那一列的数据 其实是phone
			String phone = cursor.getString(3);
			// 封装一个User类管理这四个数据
			User user = new User(id, name, age, phone);
			// 把当前user对象添加到一个集合中去
			al.add(user);
		}
		// 检测数据
		Log.d("tag", al.toString());
		// 关闭游标和数据库
		cursor.close();
		db.close();
	}

	// 使用Android自带api查询数据
	public void query2(View view) {
		SQLiteDatabase db = helper.getWritableDatabase();
		// 查询所有
		Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);
		// Cursor cursor = db.query(TABLE_NAME,
		// new String[] { "c_name", "c_age" }, "c_age < ?",
		// new String[] { "" + 20 }, null, null, null);

		// 是否有下一条数据
		while (cursor.moveToNext()) {
			// 获取索引为0那一列的数据 其实是id
			int id = cursor.getInt(0);
			// 获取索引为1那一列的数据 其实是name
			String name = cursor.getString(1);
			// 获取索引为2那一列的数据 其实是age
			int age = cursor.getInt(2);
			// 获取索引为3那一列的数据 其实是phone
			String phone = cursor.getString(3);
			// 封装一个User类管理这四个数据
			User user = new User(id, name, age, phone);
			// 把当前user对象添加到一个集合中去
			al.add(user);
		}

		

		// 关闭游标和数据库
		cursor.close();
		db.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值