ysoren 发表于 2016-11-29 09:51:22

Mars视频笔记——SQLite

  http://www.sqlite.org/
  操作数据库步骤
  1获得一个SQLiteOpenHelper对象(抽象类 需要自己写个类继承 重写3个onXXX代码)
  2通过getXXX获得SQLiteDatabase对象
  3通过SQLiteDatabase对数据库进行操作
  SQLiteOpenHelper 助手类
  getReadableDatabase() 创建或打开一个可读SQLiteDatabase
  getWritableDatabase() 创建或打开一个可读写SQLiteDatabase
  onCreate(SQLiteDatabase db)
  在第一次创建数据库时候执行,在第一次得到SQLiteDatabase方法时会执行(getXXX)
  可以在其中执行db.execSQL("create table user(id int,name varchar(20))");
  onOpen(SQLiteDatabase db)
  onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)
  SQLiteDatabase类提供了操作数据库的方法
  adb访问SQLite
  命令行输入adb 可以看到帮助信息
  adb shell 进入Linux命令行
  ls -l 进入data目录cd data
  再次进入data中的data目录 cd data
  进入到自己的应用程序中 比如 cd mars.sqlite3(其实是包名)
  创建数据库后 会有databases目录 里面存放数据库文件
  sqlite3 [数据库名] 进入sqlite命令环境
  使用SQL语句  .schema 等等
  数据库增删改查
  生成ContentValues 放键值对 键位列名 值为插入的值 数据类型必须匹配
  values.put("id",1);
  通过得到的SQLiteDatabase对象db
  用db.inset([表名],null,ContentValues对象);//插入
  db.update([表名],ContentValues对象,"id=?(?是占位符)"(where子句),new String[]{"1"}(给占位符赋值));//更新
  db.query([表名],[列名数组],,[占位符参数],,,);
  query语句返回一个Cursor对象
  类似JDBC cursor.moveToNext()移到第一条记录
  注意和resultSet区别,不能getString(列名),要根据列号
  就是cursor.getString(cursor.getColumn("列名"))才能取得数据
  在SQLiteOpenHelper的子类中必须有构造函数
  参数包括Context String CursorFactory factory等
  DatabaseHelper作为一个访问SQLite的助手类,提供2个方面的功能
  1 getXXX方法获得SQLiteDatabase对象
  2 提供了onCreate() onUpdate()方法
页: [1]
查看完整版本: Mars视频笔记——SQLite