Android SQLite数据库操作实例

     Android的自带数据库SQLite小巧且功能强大,Android提供了两种方式去操作数据库,第一种是用SQL语句去操作数据,SQLite支持标准的SQL,其分页等操作与Mysql一样,以下是利用SQL操作SQLite:

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class PersonDaoClassic {
	private DBOpenHelper helper;

	public PersonDaoClassic(Context context) {
		helper = new DBOpenHelper(context);
	}

	public void insert(Person p) {
		// 打开可写数据库
		SQLiteDatabase db = helper.getWritableDatabase();		
		
		// 执行SQL语句, 替换占位符
		db.execSQL("INSERT INTO person(name, balance) VALUES(?, ?)", new Object[] { p.getName(), p.getBalance() });
		
		// 释放资源
		db.close();
	}

	public void delete(int id) {
		SQLiteDatabase db = helper.getWritableDatabase();
		db.execSQL("DELETE FROM person WHERE id=?", new Object[] { id });
		db.close();
	}

	public void update(Person p) {
		SQLiteDatabase db = helper.getWritableDatabase();
		db.execSQL("UPDATE person SET name=?, balance=? WHERE id=?", new Object[] { p.getName(), p.getBalance(), p.getId() });
		db.close();
	}

	public Person query(int id) {
		SQLiteDatabase db = helper.getReadableDatabase();
		
		// 执行原始查询, 得到一个Cursor(类似ResultSet)
		Cursor c = db.rawQuery("SELECT name, balance FROM person WHERE id=?", new String[] { String.valueOf(id) });
		Person p = null;
		
		// 判断Cursor是否有下一条记录
		if (c.moveToNext())
			// 从Cursor中获取数据, 创建Person对象
			p = new Person(id, c.getString(0), c.getInt(1));
		
		// 释放资源
		c.close();
		db.close();
		return p;
	}

	public List<Person> queryAll() {
		SQLiteDatabase db = helper.getReadableDatabase();
		Cursor c = db.rawQuery("SELECT id, name, balance FROM person", null);
		List<Person> persons = new ArrayList<Person>();
		while (c.moveToNext())
			persons.add(new Person(c.getInt(0), c.getString(1), c.getInt(2)));
		c.close();
		db.close();
		return persons;
	}
	
	public List<Person> queryPage(int pageNum, int capacity) {		
		// 开始索引
		String start = String.valueOf((pageNum - 1) * capacity);
		// 查询的个数
		String length = String.valueOf(capacity);
		
		SQLiteDatabase db = helper.getReadableDatabase();
		
		// 翻页查询语句, 和MySQL中相同
		Cursor c = db.rawQuery("SELECT id, name, balance FROM person LIMIT ?,?", new String[]{start, length});
		List<Person> persons = new ArrayList<Person>();
		while (c.moveToNext())
			persons.add(new Person(c.getInt(0), c.getString(1), c.getInt(2)));
		c.close();
		db.close();
		return persons;
	}
	
	public int queryCount() {
		SQLiteDatabase db = helper.getReadableDatabase();
		
		// 查询记录条数
		Cursor c = db.rawQuery("SELECT COUNT(*) FROM person", null);
		c.moveToNext();
		int count =c.getInt(0); 
		c.close();
		db.close();
		return count;
	}

}

      除上述方法以外,android还给我们带来了另外一种更加简单,也是android推荐使用的一种方式,此种方式把数据封装在ContentValues中,因为android编程过程中经常会使用到已经封装好了数据的ContentValues,所以使用第二种方式在有些时候更加便捷,以下是代码:

package cn.itcast.sqlite;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class PersonDao {
	private DBOpenHelper helper;

	public PersonDao(Context context) {
		helper = new DBOpenHelper(context);
	}
	
	public void remit(int from, int to, int amount) {
		SQLiteDatabase db = helper.getWritableDatabase();	
		
		// 开启事务
		db.beginTransaction();
		try {
			db.execSQL("UPDATE person SET balance=balance-? WHERE id=?", new Object[]{amount, from});
			db.execSQL("UPDATE person SET balance=balance+? WHERE id=?", new Object[]{amount, to});
			db.setTransactionSuccessful();
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 结束事务, 将事务成功点前面的代码提交
		db.endTransaction();
		
		db.close();
	}

	public void insert(Person p) {
		SQLiteDatabase db = helper.getWritableDatabase();	
		
		// 准备数据
		ContentValues values = new ContentValues();
		values.put("name", p.getName());
		values.put("balance", p.getBalance());
		
		// 通过ContentValues中的数据拼接SQL语句, 执行插入操作, id为表中的一个列名
		db.insert("person", "id", values);		
		
		db.close();
	}

	public void delete(int id) {
		SQLiteDatabase db = helper.getWritableDatabase();
		
		// 执行删除操作, 在person表中删除id为指定值的记录
		db.delete("person", "id=?", new String[]{String.valueOf(id)});
		
		db.close();
	}

	public void update(Person p) {
		SQLiteDatabase db = helper.getWritableDatabase();

		// 要更新的数据
		ContentValues values = new ContentValues();
		values.put("name", p.getName());
		values.put("balance", p.getBalance());

		// 更新person表中id为指定值的记录
		db.update("person", values, "id=?", new String[] { String.valueOf(p.getId()) });
		
		db.close();
	}

	public Person query(int id) {
		SQLiteDatabase db = helper.getReadableDatabase();
		
		// 执行查询: 不去重复, 表是person, 查询name和balance两列, Where条件是"id=?", 占位符是id, 不分组, 没有having, 不排序, 没有分页
		Cursor c = db.query(false, "person", new String[]{"name", "balance"}, "id=?", new String[]{String.valueOf(id)}, null, null, null, null); 
		
		Person p = null;
		// 判断Cursor是否有下一条记录
		if (c.moveToNext())
			// 从Cursor中获取数据, 创建Person对象
			p = new Person(id, c.getString(0), c.getInt(1));
		
		// 释放资源
		c.close();
		db.close();
		return p;
	}

	public List<Person> queryAll() {
		SQLiteDatabase db = helper.getReadableDatabase();

		// 查询所有记录, 倒序
		Cursor c = db.query(false, "person", new String[]{"id","name", "balance"}, null, null, null, null, "id DESC", null);
		
		List<Person> persons = new ArrayList<Person>();
		while (c.moveToNext())
			persons.add(new Person(c.getInt(0), c.getString(1), c.getInt(2)));
		c.close();
		db.close();
		return persons;
	}
	
	public List<Person> queryPage(int pageNum, int capacity) {		
		// 开始索引
		String start = String.valueOf((pageNum - 1) * capacity);
		// 查询的个数
		String length = String.valueOf(capacity);
		
		SQLiteDatabase db = helper.getReadableDatabase();
		
		// 翻页查询
		Cursor c = db.query(false, "person", new String[]{"id","name", "balance"}, null, null, null, null, null, start + "," + length);
		
		List<Person> persons = new ArrayList<Person>();
		while (c.moveToNext())
			persons.add(new Person(c.getInt(0), c.getString(1), c.getInt(2)));
		c.close();
		db.close();
		return persons;
	}
	
	public int queryCount() {
		SQLiteDatabase db = helper.getReadableDatabase();
		
		// 查询记录条数
		Cursor c = db.query(false, "person", new String[]{"COUNT(*)"}, null, null, null, null, null, null);
		
		c.moveToNext();
		int count =c.getInt(0); 
		c.close();
		db.close();
		return count;
	}

}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android SQLite数据库可以通过以下几种方式进行查看: 1. 使用Android Studio自带的Database Inspector工具,可以直接查看应用程序中的SQLite数据库。在Android Studio中,选择View -> Tool Windows -> Database Inspector,然后选择要查看的设备和应用程序即可。 2. 使用第三方SQLite数据库管理工具,例如SQLite Expert Personal、SQLite Manager等。这些工具可以直接连接到设备上的SQLite数据库,并提供了更多的功能,例如导入/导出数据、执行SQL语句等。 3. 在应用程序中使用SQLiteOpenHelper类提供的getReadableDatabase()或getWritableDatabase()方法获取SQLite数据库实例,然后使用SQLiteDatabase类提供的查询方法进行查询。例如: ``` SQLiteOpenHelper dbHelper = new MyDatabaseHelper(context); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("table_name", null, null, null, null, null, null); if (cursor.moveToFirst()) { do { // 处理查询结果 } while (cursor.moveToNext()); } cursor.close(); ``` 以上是三种常见的Android SQLite数据库查看方式,具体选择哪种方式取决于具体的需求和情况。 ### 回答2: Android SQLite 数据库Android应用程序中最常用的数据库,主要用于数据存储和管理。在应用开发的过程中,开发人员需要不断的查看和管理这些数据,以便及时修改和优化应用程序。Android提供了多种方式来查看和管理SQLite数据库。 1. Android Studio 在Android Studio中,可以通过打开“Device File Explorer”,找到正在使用应用程序的设备,进入应用程序的“data/data/com.package.name/database”目录,即可找到应用程序的数据库,并进行查看和管理。 2. ADB命令 ADB命令可以直接访问系统数据库,并在命令行界面对SQLite数据库进行操作。如: adb shell sqlite3 /data/data/com.package.name/databases/database_name.db 3. 第三方工具 Android平台上还有一些非常出色的第三方数据库管理工具,如SQLite Database Browser等,这些工具提供了更多的功能和选项,能够更加灵活和便捷地操作SQLite数据库。 总的来说,Android SQLite数据库的查看和管理涉及到多个方面,需要开发人员熟练掌握相关知识和技术,才能够更好地实现应用程序的开发和维护。 ### 回答3: 首先,Android SQLite数据库是一个轻量级的关系型数据库,用于存储应用程序的数据。通过SQLiteOpenHelper类创建和管理数据库Android Studio提供了两个工具来查看和管理SQLite数据库,分别是Device File Explorer和SQLite Explorer插件。 Device File Explorer 设备文件浏览器可以在Android模拟器或实际物理设备上查看应用程序数据,包括SQLite数据库文件。要使用设备文件浏览器,打开Android Studio并连接模拟器或物理设备。然后,选择菜单栏中的"View"-> "Tool Windows"-> "Device File Explorer"来打开设备文件浏览器。 在"Device File Explorer"窗口中,可以找到应用程序的包名并展开它,然后找到该应用程序的数据库文件,通常是以".db"或".sqlite"为扩展名。单击数据库文件,即可在右侧窗格中查看和下载数据库文件。 SQLite Explorer插件 SQLite Explorer是一款用于管理SQLite数据库Android Studio插件。要使用它,打开Android Studio并选择菜单栏中的"File"-> "Settings"-> "Plugins"。在搜索栏中搜索SQLite Explorer,然后安装它并重新启动Android Studio。 安装成功后,可以在Android Studio右侧边栏中找到SQLite Explorer图标。单击该图标,即可打开插件并浏览SQLite数据库。在"Data Sources"选项卡中,可以添加数据库文件并对其进行操作,如查看表、索引和触发器,或者执行查询语句和更改数据。 总体而言,通过设备文件浏览器或SQLite Explorer插件,可以很容易地查看和管理Android SQLite数据库。对于开发人员和测试人员来说,这些工具非常有用,可以快速查找和修复数据库问题和错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值