Android中使用SQLiteDatabase对数据库进行操作

  1. SQLiteDatabase 提供了如下静态方法打开一个文件对应的数据库:
    static SQLiteDatabase openDatabase(String path, SQLiteDatabase.CursorFactory factory , int flags) : 打开path文件所代表的SQLite数据库
    static SQLiteDatabase openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory ) : 打开或创建(如果不存在) file文件所代表的SQLite数据库
    如:
      //参数一:表示路径名;
      //参数二:是一个用于返回Cursor的工厂,该参数为NULL, 表示使用默认的工厂
       SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("/mnt/db/temp.db", null);

如果在/mnt/db/目录下的temp.db文件存在,那么程序就打开该数据库。
如果在/mnt/db/目录下的temp.db文件不存在,那么程序就创建该数据库。

创建数据表

 //定义建表语句
       sql = " create table student(_id integer primary key,  name varchar(255),  number  integer");
       //执行SQL语句
       db.execSQL(sql); 

操作数据库(即:操作数据表)
Android 的SQLiteDatabase提供了insert、upate、delete、query语句来操作数据库。
( 1 ) 使用insert方法插入记录

   long insert(String table, String nullColumnHack, ContentValues values);
   返回的是一个long 型,表示成功插入几条数据  (一条没插入则返回0,不会报错)

table : 表名
nullColumnHack : 代表强行插入null值的数据列的列名。当values=null或不包含任何key-value对时该参数有效。
values: 代表一行记录的数据
insert方法插入的一行记录使用ContentValues存放,提供put()方法存入数据,提供get()方法获取数据。
例如:

   ContentValues values = new ContentValues();
   values.put("name", "孙悟空");
   values.put("age", 500);
   //返回新添加记录的行号,该行号是一个内部值,与主键id 无关,发生错误返回-1
   long rowId = db.insert("person", null, values); 

不管values是否为NULL,执行insert(),总会添加一条记录,如果values=null, 则会添加一条除主键之外,其他字段都为NULL的记录。

( 2 )使用update方法更新记录

   int udpate(String table, ContentValues values, String whereClause, String whereArgs);

返回的是一个 int 型,表示成功更新几条数据 (一条没更新则返回0,不会报错)
table : 表名
values: 代表想要更新的数据
whereClause: 满足该whereClause字句的记录将会被更新
whereArgs: 用于为whereClause子句传入参数
返回受此update语句影响的记录条数

      ContentValues values = new ContentValues();
      //存放更新后的人名
      values.put("name", "新人名");
      int result = db.update("person",values, "_id>?", new String[] {"20"}

( 3 )使用delete方法删除记录

   int delete(String table,  String whereClause, String[] whereArgs);

table : 表名
whereClause: 满足该whereClause字句的记录将会被删除
whereArgs: 用于为whereClause子句传入参数
返回受此update语句影响的记录条数

( 4 )查找数据库数据

   Cursor query(boolean distinct, String table, String[] columns, 
                         String whereClause, String[] selectionArgs,
                         String groupBy, String having, 
                         String oderBy, String limit);

distinct: 指定是否去除重复记录
table: 执行查询数据的表名
colummns: 要查询出来的列名。如select语句select关键字后面的部分
whereClause: 查询条件子句,where关键字后面的部分,在条件子句中允许使用占位符”?”
selectionArgs: 用于为whereClause子句中的占位符传入参数,值在数组中的位置与占位符在语句中的位置必须一致。否则就会有异常。
groupBy: 相当于select语句groupby关键字后面的部分
having: 相当于select语句having关键字后面的部分
orderBy: 相当于select语句orderby关键字后面的部分
limit: limit参数控制最多查询几条记录(用于控制分页的参数).
返回一个Cursor对象。Cursor提供了如下方法来移动查询结果的记录指针:
move(int offset): 将记录指针向上或向下移动指定的行数。offset为正数就是向下移动,为负数就是向上移动
boolean moveToFirst():将记录指针移动到第一行,如果移动成功则返回true
boolean moveToLast():将记录指针移动到最后一行,如果移动成功则返回true
boolean moveToNext():将记录指针移动到下一行,如果移动成功则返回true
boolean moveToPosition(int position): 将记录指针移动到指定行,如果移动成功则返回true.
○ boolean moveToPrevious():将记录指针移动到上一行,如果移动成功则返回true
记录指针指的第一行为null
一旦记录指针移动到指定行后,就可以使用Cursor的getXXX()方法获取该行指定列的数据了

你可能感兴趣的:(Android新手教程)