对SQLite的管理

创建和打开数据库

//1.创建和打开一个数据库可以使用openOrCreateDatabase方法来实现(如果存在就打开,如果不存在就创建一个数据库)
//2.创建成功后返回一个SQLiteDatabase对象,否则抛出异常FileNotFoundException
/*3.参数 (String DATABASE_NAME 数据库的名字,
          Int MODE 操作模式 Context.MODE_PRIVATE 等,
          CursorFactory指定在执行查询时获得一个游标实例的工厂类。 设置为null,则使用系统默认的工厂类)*/

SQLiteDatabase mSQLiteDatabase = this.openOrCreateDatabase("myDB.db",MODE_PRIVATE,null);

删除数据库

this.deleteDatabase();

关闭数据库

使用完数据库必须要关闭。

mSQLiteDatabase.close();

创建表

一个数据库可以包含多个表。

SQLite 3 数据类型

TEXT 文本 NUMERIC 数值 INTEGER 整型 REAL 小数 NONE 无类型

 

1.创建表可以通过execSQL方法执行一条SQL语句。
2.创建一张名为table1且包含3个字段的表
String createTable = "create table table1(
                      _id integer primary key,
                      num integer,
                      data text)"
;
mSQLiteDatebase
.execSQL(createTable);

删除指定表

mSQLiteDatabase.execSQL("drop table table1");

向表中添加一条数据

1.使用insert和ContentValues插入数据

使用insert方法来添加数据,但是insert方法要求把数据都打包到ContentValues中。 ContentValues其实就是一个Map,Key值是字段名称,Value值是字段的值。 通过ContentValues的put方法可以把数据放入ContentValues中,然后插入表。

ContentValues cv = new ContentValues();
//存储数据
cv
.put("num",1);
cv
.put("data","测试数据库数据");

//插入数据到表table1
//参数 (表名,nullColumnHack 和所有字段都是空的记录有关系,ContentValues数据)
mSQLiteDatabase
.insert("table1",null,cv);

2.使用SQL语句插入数据

String insertSQL = "insert into table1(_id,num,data) values(1,1,'通过SQL插入数据')";
mSQLiteDatabase
.execSQL(insertSQL);

修改表中的数据

1.使用update和ContentValues更新数据

ContentValues cv = new ContentValues();
//存储修改的数据
cv
.put("num",2);
cv
.put("data","修改后的数据");

//更新数据
//参数String table 表名, String whereClause 查询语句, String[] whereArgs 参选语句使用问号的替代参数
mSQLiteDatabase
.update("table1",cv,"_id="+1,null);

2.使用SQL语句更新数据

String updateSQL = "update tbale1 set num = 2,data = '修改后的数据' where _id = 1";
mSQLiteDatabase
.execSQL(updateSQL);

删除表中的数据

1.使用delete删除数据

//参数String table 表名, String whereClause 查询语句, String[] whereArgs 参选语句使用问号的替代参数
mSQLiteDatabase
.delete("table1","where _id="+0,null);

2.使用SQL语句删除

String deleteSQL = "delete from table1 where _id=1";
mSQLiteDatabase
.execSQL(deleteSQL);

查询数据

查询数据是通过Cursor类来实现的。当使用SQLiteDatabase.query()方法时,返回会得到一个Cursor对象,Cursor指向的就是每一条数据。

1.query查询

public Cursor query (String table, String columns, String selection, String selectionArgs, String groupBy, String having, String orderBy)

table: 表名称,不可为null

columns: 要返回的列名数组,置null表示返回所有列

selection: where子句,如果不需要where子句则置null,写法如"id=?",此处将要填的参数写为?,供下方的selectionArgs填充

selectionArgs: where子句的所需值,该数组将依次填充selection中的每一个问号。

groupby: GroupBy子句

having: Having子句

orderBy: order by 子句

Cursor cur = mSQLiteDatabase.query("table1",new String[]{"_id","num","data"},null,null,null,null,null);

2.SQL查询

//String SQL查询语句, String[] whereArgs 参选语句使用问号的替代参数
Cursor cur = mSQLiteDatabase.rawQuery("select * from table1",null);
if(cur != null){
 
if(cur.moveToFirst()){
     
do{
         
//得到num索引
         
int numColumn = cur.getColumnIndex("num");
         
//得到数据
         
int num = cur.getInt(numColumn);
         
String data = cur.getString(c.getColumnIndex("data")
     
}while(cur.moveToNext)
 
}
}

Cursor常用方法

move 以当前位置为参考,将Cursor移动到指定的位置,成功返回true,失败返回false

moveToPosition 将Cursor移动到指定的位置,成功返回true,失败返回false

moveToNext 将Cursor向前移动一个位置,成功返回true,失败返回false

moveToLast 将Cursor向后移动一个位置,成功返回true,失败返回false

moveToFirst 将Cursor移动到第一行,成功返回true,失败返回false

isBeforeFirst 返回Cursor是否指向第一项数据之前

isAfterLast 返回Cursor是否指向最后一项数据之后

isClosed 返回Cursor是否关闭

isFirst 返回Cursor是否指向第一项数据

isLate 返回Cursor是否指向最后一项数据

isNull 返回指定位置的值是否为Null

getCount 返回总的数据项数

getInt 返回当前行中指定索引的数据

查看文件

data/data/项目名/databases/myDB.db

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值