SQLite数据库

来源:互联网 发布:xp共享找不到网络路径 编辑:程序博客网 时间:2024/04/27 19:10
 

用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();

 

原创粉丝点击