博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android使用sqlite数据库的使用
阅读量:5328 次
发布时间:2019-06-14

本文共 5160 字,大约阅读时间需要 17 分钟。

移动端Android开发,我们使用的是sqlite数据库,这是一个轻量级的数据库,我们在使用的时候,甚至不想mysql等数据库一样加载驱动啊,在androidsdk中,都已经帮我们做好了,我们只需要用就好了,下面介绍一下使用方法,

  首先,我们需要建一个类来继承SQLiteOpenHelper,并重写PersonSQLiteOpenHelper与oncreate方法即可,前者是建立一个的名字,后者是建立数据库结构的脚本,这两个方法会在数据库第一次创建的时候,调用。建好了,就不再调用了。

 

/**	 * 数据库的构造方法,用来定义数据库的名称,数据库的查询的结果集,数据库版本。	 * @param context	 */	//factory ,游标工厂,设置位null,version数据库版本。	public PersonSQLiteOpenHelper(Context context) {		super(context, "person.db", null, 1);	}	/**	 * 数据库第一次创建的时候,调用的方法	 * db:被创建的数据,	 */	@Override	public void onCreate(SQLiteDatabase db) {				//初始化数据库的表结构。		db.execSQL("create table person (id integer primary key autoincrement,name varchar(20),number varchar(20))");	}

 

数据库建好了,我们接下来要实现数据库的曾删改查的一些操作了,这时我们可以选择sql脚本或者google工程师封装好的api进行

  

public class PersonDao {	private PersonSQLiteOpenHelper helper;	public PersonDao(Context context){		helper = new PersonSQLiteOpenHelper(context);	}		public void add(String name,String number){		SQLiteDatabase db = helper.getWritableDatabase();		db.execSQL("insert into person (name,number) values (?,?)",new Object[]{name,number});	//	db.execSQL(sql, bindArgs)				db.close();	}		public boolean find(String name){		SQLiteDatabase db = helper.getReadableDatabase();		Cursor cursor = db.rawQuery("select * from person where name = ?", new String[]{name});		//默认的结果集是指到第一个行,是空的,		boolean result = cursor.moveToNext();		cursor.close();		db.close();		return result;	}	//修改number	public void update(String name,String number){		SQLiteDatabase db = helper.getReadableDatabase();		db.execSQL("update person set number =? where name = ?",new Object[]{number,name});		db.close();	}	public void delete(String name){		SQLiteDatabase db = helper.getReadableDatabase();		db.execSQL("delete from person where name = ?", new Object[]{name});	}		public List
findAll(){ SQLiteDatabase db = helper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from person", null); List
persons = new ArrayList
(); while(cursor.moveToNext()){ //0// int id = cursor.getInt(0); int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(1); String number = cursor.getString(2); Person p = new Person(id, name, number); persons.add(p); } cursor.close(); db.close(); return persons; } }

 

 

public class PersonDaoApi {	private PersonSQLiteOpenHelper helper;	public PersonDaoApi(Context context){		helper = new PersonSQLiteOpenHelper(context);	}		public long add(String name,String number){		SQLiteDatabase db = helper.getWritableDatabase();		//db.execSQL("insert into person (name,number) values (?,?)",new Object[]{name,number});		ContentValues values = new ContentValues();		values.put("name", name);		values.put("number", number);		//返回结果>-1,表示成功的。		long result = db.insert("person", null, values);		db.close();		return result;	}		public boolean find(String name){		SQLiteDatabase db = helper.getReadableDatabase();		//Cursor cursor = db.rawQuery("select * from person where name = ?", new String[]{name});		//db.query("person", columns, selection, selectionArgs, groupBy, having, orderBy)	//	columes=null,反悔所有列。		Cursor cursor = db.query("person", null, "name=?", new String[]{name}, null, null, null);				//默认的结果集是指到第一个行,是空的,		boolean result = cursor.moveToNext();		cursor.close();		db.close();		return result;	}	//修改number	public int update(String name,String number){		SQLiteDatabase db = helper.getReadableDatabase();		//db.execSQL("update person set number =? where name = ?",new Object[]{number,name});		ContentValues values = new ContentValues();		values.put("number", number);				//影响多少行,		int row = db.update("person", values, "name=?", new String[]{name});		db.close();		return row;	}	public int delete(String name){		SQLiteDatabase db = helper.getReadableDatabase();	//	db.execSQL("delete from person where name = ?", new Object[]{name});		//影响的行数,》0 及成功		int row = db.delete("person", "name=?", new String[]{name});		db.close();		return row;	}		public List
findAll(){ SQLiteDatabase db = helper.getReadableDatabase(); //Cursor cursor = db.rawQuery("select * from person", null); Cursor cursor = db.query("person", new String[]{"name", "id", "number"}, null, null, null,null, null); List
persons = new ArrayList
(); while(cursor.moveToNext()){ //0// int id = cursor.getInt(0); int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String number = cursor.getString(cursor.getColumnIndex("number")); Person p = new Person(id, name, number); persons.add(p); } cursor.close(); db.close(); return persons; } }

 

数据库建好后,在哪里呢,我们怎样找到呢?

  数据库建好后,存放在Android目录的/data/data/程序包名/databases 目录下,我们打开后,就可以刚才建的数据库了,把这个.db文件导出,用sqlitemanager(mac),或者sqlitexploer(windows),就可以打开这个数据库进行查看了,

  但是/data/data/程序包名/databases 这个目录由于权限的控制,我们也只能是在模拟器中能打开,真机调试的时候,是打不开的,那我们怎么进行使用呢,

这时我们可以使用adb指令,来使用,首先在终端中是可以打开这个目录的,所以我们先进入这个目录,比如我们执行

# cd /data/data/com.ftf.db/databses# sqlite3 person.db

 

就会发现,不再是adb模式下的指令了,而变成sql指令的形式了,而这是和mysql一样的,这时我们就可以相关sql语句的书写了。

 

转载于:https://www.cnblogs.com/fengtengfei/p/3965387.html

你可能感兴趣的文章
JS 在火狐浏览器下关闭弹窗
查看>>
css3渐变画斜线 demo
查看>>
UIView中的坐标转换
查看>>
JS性能DOM优化
查看>>
设计模式 单例模式 使用模板及智能指针
查看>>
c++11 多线程依次打印ABC
查看>>
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>
What Linux bind mounts are really doing
查看>>
linux top命令详解
查看>>
博弈论小结
查看>>
模拟Post登陆带验证码的网站
查看>>
预科阶段:快速实战入门
查看>>
CentOS下安装配置MySQL8.0的步骤详解
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
HTML基础
查看>>
汉字首字母
查看>>
老罗将死,或者Android也将就换代,但是互联网的,共享,互助精神将永存
查看>>