在《Android SQL语句实现数据库的增删改查》中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用。
系统API实现数据库的增删改查
相关代码修改如下:
package com.wuyudong.db.dao; 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; import com.wuyudong.db.PersonSQLiteOpenHelper; import com.wuyudong.db.domain.Person; public class PersonDao { private PersonSQLiteOpenHelper helper; public PersonDao(Context context) { helper = new PersonSQLiteOpenHelper(context); } /** * 添加一条记录到数据库 * * @param name * 姓名 * @param number * 电话 */ public void 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); db.insert("person", null, values); db.close(); } /** * 查询记录是否存在 * * @param name * 姓名 return true存在, false不存在 */ public boolean find(String name) { SQLiteDatabase db = helper.getReadableDatabase(); // Cursor cursor = db.rawQuery("select * from person where name=?", // new String[] { name }); Cursor cursor = db.query("person", null, "name=?", new String[] { name }, null, null, null); boolean result = cursor.moveToNext(); cursor.close(); db.close(); return result; } /** * * @param name * 要修改的人的姓名 * @param newnumber * 新的号码 */ public void update(String name, String newnumber) { SQLiteDatabase db = helper.getReadableDatabase(); // db.execSQL("update person set number=? where name=?", new Object[] { // newnumber, name }); ContentValues values = new ContentValues(); values.put("number", newnumber); db.update("person", values, "name=?", new String[] { newnumber }); db.close(); } /** * 删除一条记录 * * @param name */ public void delete(String name) { SQLiteDatabase db = helper.getReadableDatabase(); // db.execSQL("delete from person where name=?", new Object[] { name }); db.delete("person", "name=?", new String[] { name }); db.close(); } /** * 返回全部的数据库信息 * * @return */ public List<Person> findAll() { List<Person> persons = new ArrayList<Person>(); 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); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String number = cursor.getString(cursor.getColumnIndex("number")); Person person = new Person(id, name, number); persons.add(person); } cursor.close(); db.close(); return persons; } }
两种数据库增删改查方式的优缺点
1. 直接利用sql语句增删改查
优点:非常的灵活,多表查询,级联查询。
缺点:代码容易出错,方法没有返回值。
2. 利用google包装的api 执行增删改查
优点: 代码不容易出错,写起来简单,方法有返回值
缺点: 不容易多表查询。复杂表的操作,视图都无法实现。
运行代码后查看结果十分麻烦,下面介绍一种简单的方法
SQLite3工具的使用
cmd打开命令行
输入“adb shell” 出现如下错误
以为是模拟器没开的原因,但是打开模拟器后,还是一样的错误出现
进入相应目录
继续进入databases 目录
输入如下命令:
sqlite3 person.db
执行一条sql语句如下: