Android如何连接和操作SQLite数据库

Android中如何使用sqlite数据库?

Android中为我们操作sqlite数据库提供了一些接口,比如SQLiteOpenHelper等,总体的思路是:先继承SQLiteOpenHelper抽象类并实现其中的构造方法和onCreate方法来进行数据库的创建以及表的创建,接着通过创建SQLiteDatabase类实例并调用其提供的insert、query等方法来进行数据的增删查改

以下是详细步骤:


1、先创建一个DBHelper类,继承SQLiteOpenHelper类,并重写构造方法和onCreate方法等:
public class DBHelper extends SQLiteOpenHelper{

	public DBHelper(Context context) {
		super(context, "mydb.db", null, 1);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		String sql="CREATE TABLE test(account VARCHAR(20),password VARCHAR(20))";
		db.execSQL(sql);
		
	}
	
	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}
	
	

}
其中,构造方法传入一个上下文作为参数,调用父类的构造方法,传入数据库的名称为mydb.db,游标工厂这里先设为null,版本号设置为1,在onCreate方法里面进行建表操作,一旦创建DBHelper实例,就会调用onCreate方法,创建表格,注意:onCreate方法只会被调用一次,当第二次创建DBHelper实例时就不会再调用此方法。onUpgrade方法则用来对数据库进行操作。

2、这里以查询为例,创建一个查询方法:
public String queryPassword(String sql, String[] bindArgs){
		SQLiteDatabase database = getWritableDatabase();
		Cursor cursor = database.rawQuery(sql, bindArgs);
		String result = null;
		while(cursor.moveToNext()){
			result = cursor.getString(cursor.getColumnIndex("password"));
		}
		return result;
	}
其中方法参数是一个sql语句和执行的sql参数,Android中真正操作数据库是通过SQLiteDatabase这个类来进行的,通过getWritableDatabase或者getReadableDatabase方法来创建一个SQLiteDatabase实例,由于查询结果可能会有多条记录,Cursor游标是用来存放遍历查询结果,个人理解为相当于以前写的ResultSet结果集,这里的例子只是查询到单条记录,所以我只定义了一个String来存放结果。


3、新建DBHelper实例,调用刚才封装好的查询方法:
DBManger dbManger = new DBManger(getApplicationContext());
				String[] params = new String[]{taccount.getText().toString()};
				String password = dbManger.queryPassword("SELECT * FROM test WHERE account = ?", params);
将account作为查询的sql语句的参数传进,将结果赋给password


4.执行成功之后,要去哪里寻找我们的数据库文件呢?:
打开eclipse的File Explorer,这里所展示的目录是当前测试设备的文件目录,找到其中的data目录,有些设备可能会展不开data目录,那是因为手机没有获得root权限,不能操作data下的文件,进行以下步骤可实现修改权限:
(1)网上有很多root工具,下载一个一键root大师,它可以检测手机是否具有root权限,并且可以提供一键root功能,如果它提示手机已经获得root权限,则不用root,反之通过root获得超级管理员权限
(2)下载一个RE文件管理器安装到设备上,然后打开手机的安全中心->root权限管理->授予RE文件管理器root权限
(3)打开RE文件管理器,展开data->data->你的项目目录->database->即可看到你刚才创建的数据库文件,并且将刚才这个路径逐一设置权限为可读写,即可实现在eclipse中展开data目录

然后将该文件导出到电脑上:

点击图中这个按钮即可将数据库文件拷贝到电脑中。

到这里,我们获得了数据库文件,可是如何查看其中的数据呢,需要使用一个SQLite可视化工具:SQLite Expert Personal 3
打开SQLite Expert Personal 3工具:

点击附加本地数据库文件,将刚才的那个数据库文件附加进来,即可象普通的数据库表那样进行操作。


一.创建一个DataBaseHelper DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 2.提供了onCreate()onUpdate()两个回调函数,允许我们常见升级数据库是进行使用 A、 在SQLiteOpenHelper的子类当中,必须要有的构造函数 B、该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDataBase对象的时候onCreate 二、创建一个实体person类并且给字段封装 三、创建一个业务类对SQL的CRUD操作 1.getWritableDatabase()getReadableDatabase()的区别 ,两个方法都可以获取一个用于操作数据库SQLiteDatabase实例 2.execSQL(增,删,改都是这个方法)close();android内部有缓存可关闭也不关闭也行,查询rawQuery是方法 3.在分页有到Cursor(游标)取游标下一个值cursor.moveToNext(),用游标对象接数据 "select * from person limit ?,?" person不能加上where 关键字 4.在删除注意:sb.deleteCharAt(sb.length() - 1); 四、AndroidCRUD业务对SQLite的CRUD操作 1.ContentValues对象的使用 2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = new AndroidCRUDService(this.getContext()); /* * 注意:getContext必须在我们使用前已经注解进去的,在使用前要实力化,而且是使用后才有上下文 *一般设置为局部对象 */ 六、AndroidManifest.xml的配置 <!-- 配置用户类库android.test.runner测试 --> package jll.sqlitedb; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * *@author Administrator DataBaseHelper是一个访问SQLite的助类,提供两个方面的功能 * 1.getReadableDatebase(),getWriteableDatabase()可以获取SQLiteDatabase对象,通过 * 2.提供了onCreate()onUpdate()两个回调函数,允许我们常见升级数据库是进行使用 */ public class DataBaseHelper extends SQLiteOpenHelper { // 给一个默认的SQLite数据库名 private static final String DataBaseName = "SQLite_DB"; private static final int VERSION = 2; // 在SQLiteOpenHelper的子类当中,必须要有的构造函数 public DataBaseHelper(Context context, String name, CursorFacto
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值