用adb命令进入sqlite数据库
Adb shell -> cd data -> cd data ->cd com.itheima.db ->databases-> sqlite3 persons.db (persons.db为数据库名)
Select * from person;
操作sqlite数据库(需要借助SQLiteOpenHelper)
public class MyDBOpenHelper extends SQLiteOpenHelper {
/**
*
* @param context 应用程序上下文
* @param name 数据库的名字
* @param factory 查询数据库的游标工厂 一般情况下 用sdk默认的
* @param version 数据库的版本 版本号必须不小1
*
*/
public MyDBOpenHelper(Context context) {
super(context, "itheima.db", null, 5);
}
// 在mydbOpenHelper 在数据库第一次被创建的时候 会执行onCreate();
@Override
public void onCreate(SQLiteDatabase db) {
System.out.println("我被调用了 oncreate");
db.execSQL("CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("on update ");
db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL ");
}
}
通过DBOpenHelper对数据库进行增删改查
public class PersonDao {
private static final String TAG = "PersonDao";
private MyDBOpenHelper dbOpenHelper;
// 在personDao被new出来的时候 就完成初始化
public PersonDao(Context context) {
dbOpenHelper = new MyDBOpenHelper(context);
// dbOpenHelper.getReadableDatabase()
// dbOpenHelper.getWritableDatabase()
}
// 增删改查
/**
* 往数据库添加一条数据
*/
public void add(String name, String phone) {
boolean result = find(name);
if (result)
return;
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
db.execSQL("insert into person (name,phone) values (?,?)",
new Object[] { name, phone });
// 关闭数据库 释放数据库的链接
db.close();
}
}
/**
* 查找数据库的操作
*/
public boolean find(String name) {
boolean result = false;
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
if (db.isOpen()) {
Cursor cursor = db.rawQuery("select * from person where name=?",
new String[] { name });
if (cursor.moveToFirst()) {
int index = cursor.getColumnIndex("phone"); // 得到phone在表中是第几列
String phone = cursor.getString(index);
Log.i(TAG, "phone =" + phone);
result = true;
}
// 记得关闭掉 cursor
cursor.close();
result = false;
// 释放数据库的链接
db.close();
}
return result;
}
/**
* 删除一条记录
*
* @param name
*/
public void delete(String name) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
db.execSQL("delete from person where name =?",
new Object[] { name });
db.close();
}
}
/**
* 更新一条记录
*
*/
public void update(String name, String newname, String newphone) {
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
if (db.isOpen()) {
db.execSQL("update person set name=? , phone=? where name=?",
new Object[] { newname, newphone, name });
db.close();
}
}
/**
* 查找全部
*/
public List<Person> getAllPersons() {
List<Person> persons=null;
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
if (db.isOpen()) {
persons = new ArrayList<Person>();
Cursor cursor = db.rawQuery("select * from person ", null);
while (cursor.moveToNext()) {
Person person = new Person();
int nameindex = cursor.getColumnIndex("name");
int phoneindex = cursor.getColumnIndex("phone");
String name = cursor.getString(nameindex);
String phone = cursor.getString(phoneindex);
person.setName(name);
person.setNumber(phone);
persons.add(person);
}
cursor.close();
db.close();
}
return persons;
}
}
SQLite事务的处理
Db.beginTransaction();开启事务
Try{
Db.execSQL();
Db.setTransactionSuccessful();//调用此方法会在执行到endTransaction()时提交当前事务,如果不调用此方法会回滚事务
}finally{
Db.endTransaction();
}
Db.close();