sqlite数据库的基本使用

特点:轻量级嵌入式数据库,支持Sql语句,适用于资源有限的设备。

无需指定数据类型,

注意:id必须是_id

 

数据库位置:/data/data/PackageName/database

 

1、获取SQLiteDatabase对象:

SQLiteDatabase.openOrCreateDatabase(String path, CursorFactoryfactory)

第一个参数是数据库要存储的位置,第二个参数是游标,返回值是一个SQLiteDatabase对象。

2、使用SqlLiteOpenHelper

 

sql语句可以采用两种形式:

①采用字符串串拼接,这种方式不够灵活,如果复杂很难拼接。

②采用预处理模式:及用?占位,也叫sql模板,灵活。

 

执行sql:

db.execSQL(insertSql);//没结果,执行没有占位符的sql语句

db.execSQL(insertSql, new String[]{字段1,字段2,……});//适用于有占位符的sql数据,数组中字段出现的顺序是占位符?的循序。

 

execSQL仅用与执行完sql后没结果集的sql语句,即增加,删除,更新

rawQuery用于执行有结果集的sql语句,即查询,返回值是一个Cursor对象。

 

数据展示方式:

①用SimpleCursorAdapter展示在listview上

②自定义Adapter,用while循环遍历Cursor对象,拿出具体数据

 

使用SqlLiteOpenHelper步骤:

1、写一个类继承SqlLiteOpenHelper

public classMySQLiteOpenHelper extends SQLiteOpenHelper

2、必须重写父类的构造方法

public MySQLiteOpenHelper(Contextcontext, String name, CursorFactory factory, int version) {

                  super(context,name, factory, version);//四个参数的构造方法,实例化时只需Context对象,所以其他构造方法参数可以不要

}

改造后

public MySQLiteOpenHelper(Contextcontext) {//实例化时只需Context对象

                  super(context,name, factory, version);

}

两个方法:

public voidonCreate(SQLiteDatabase db) {//这个方法中创建表,只在程序第一次运行时执行一次

}

 

@Override//版本更新

public voidonUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion) {

//该方法用于版本更新,基本思想是把以前表中的数据存储起来,更新完后继续放进去,也可以新增表之类的

}

3、实例化SQLiteOpenHelper子类

help =new MySQLiteOpenHelper(this)

4、获取SQLiteDatabase对象

获取只具有读权限的SQLiteDatabase对象:db =help.getReadableDatabase();

获取具有读和写权限的SQLiteDatabase对象:db = help.getWritableDatabase();

5、进行增删改查

插入:db.insert(table, nullColumnHack, values)//参数1是要插入的表名,第二个参数一般为null,第三个参数是ContentValues对象,里面可以用键值对存储数据。

构造第三个参数:

ContentValues values = newContentValues();

values.put(key, value);

第二个参数详解:nullColumnHack optional; may be null.SQL doesn't allow inserting a completely empty row without naming at least onecolumn name. If your provided values is empty, no column names are known and anempty row can't be inserted. If not set to null, the nullColumnHack parameterprovides the name of nullable column name to explicitly insert a NULL into inthe case where your values is empty.

更新:db.update(table, values, whereClause, whereArgs)

第一个参数是表名,第二个是ContentValues对象,第三个是修改条件,第四个是为条件中占位符赋值,是一个字符串数组。

查询:db.query(table, columns, selection, selectionArgs, groupBy, having,orderBy);第二个参数是要查询的列名,selection是选择条件,selectionArgs为selection中的占位符赋值,groupBy是分组,having分组条件,orderBy排序。

返回值是个Cursor对象

删除:db.delete(table, whereClause, whereArgs);同理

 

遍历结果集Cursor对象

moveToNext()是cursor指针移向下一行,如果有数据则返回true

使用步骤:

判断cursor. moveToNext()是否为true,在进行遍历,为false,说明没有数据。

获取cursor中具体数据:

Cursor.get类型(Cursor.getColumnIndex(列名或列下标))

注意:cursor列下标从0开始

例如:cursor.getString(cursor.getColumnIndex(columnName))

cursor.getString(cursor.getColumnIndex(0))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值