SQLite数据库

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值