转载与:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0714/1438.html 来自:泡在网上的日子。
和其他数据库一样,SQLite数据库的一般操作包括:创建数据库、打开数据库、创建表、向表中添加数据、从表中删除数据、修改表中的数据、关闭数据库、删除指定表、删除数据库和查询表中的某条数据。下面我们分别来学习这些基本操作。
1.创建和打开数据库
在Android 中创建和打开一个数据库都可以使用openOrCreateDatabase 方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,不过不存在则创建一个数据库;创建成功则返回一个 SQLiteDatabase对象,否则抛出异常FileNotFoundException。下面我们来创建一个名为"Examples_06_05.db"的数据库,并返回一个SQLiteDatabase对象 mSQLiteDatabase。
1
|
mSQLiteDatabase =
this
.openOrCreateDatabase(
"Example_06_05.db"
, MODE_PRIVATE,
null
);
|
3.向表中添加一条数据
可以使用insert 方法来添加数据,但是 insert 方法要求把数据都打包到 ContentValues 中, ContentValues 其实就是一个Map, key值是字段名称, Value值是字段的值。通过 ContentValues 的 put 方法就可以把数据放到ContentValues中,然后插入到表中去。具体实现如下:
1
2
3
4
5
6
7
8
|
ContentValues cv =
new
ContentValues();
cv.put(TABLE_NUM, 1);
cv.put(TABLE_DATA,
"测试数据"
);
mSQLiteDatabase.insert(TABLE_NAME,
null
, cv);
//这样同样可以使用execSQL方法来执行一条“插入”的SQL语句,代码如下:
String INSERT_DATA =
"INSERT INTO table1 (_id, num, data) values (1, 1, '通过SQL语句插入')"
;
mSQLiteDatabase.execSQL(INSERT_DATA);
|
4.从表中删除数据
要删除数据可以使用delete 方法,下面我们删除字段 "_id" 等于1的数据,具体代码如下:
1
2
3
4
|
mSQLiteDatabase.
delete
(
"Examples_06_05.db"
,
" where_id="
+0,
null
);
通过 execSQL方法执行SQL语句删除数据如下:
String DELETE_DATA =
"DELETE FROM table1 WHERE _id=1"
;
mSQLiteDatabase.execSQL(DELETE_DATA);
|
5.修改表中的数据
如果添加了数据后发现数据有误,这时需要修改这个数据,可以使用updata方法来更新一条数据。下面我们来修改 "num" 值为0的数据,具体代码如下:
1
2
3
4
|
ContentValues cv =
new
ContentValues();
cv.put(TABLE_NUM, 3);
cv.put(TABLE_DATA,
"修改后的数据"
);
mSQLiteDatabase.update(
"table1"
cv,
"num "
+
"="
+ Integer.toString(0),
null
);
|
6.关闭数据库
关闭数据库很重要,也是大家经常容易忘记的。关闭的方法很简单,直接使用SQLiteDatabase 的 close 方法。具体代码如下:
1
|
mSQLiteDatabase.close();
|
7.删除指定表
这里我们使用execSQL方法来实现,具体代码如下:
1
|
mSQLiteDatabase.execSQL(
"DROP TABLE table1"
);
|
8.删除数据库
要删除一个数据库,直接使用deleteDatabase 方法即可,具体代码如下:
1
|
this
.deleteDatabase(
"Examples_06_05.db"
);
|
9.查询表中的某条数据
在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,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是否指向第一项数据 |
isLast | 返回Cursor是否指向最后一项数据 |
isNull | 返回指定位置的值是否为null |
getCount | 返回总的数据项数 |
getInt | 返回当前行中指定的索引数据 |
下面我们就是用Cursor来查询数据库中的数据,具体代码如下:
1
2
3
4
5
6
7
8
9
|
Cursor cur = mSQLiteDatabase.rawQuery(
"SELECT * FROM table"
,
null
);
if
( cur !=
null
){
if
( cur.moveToFirst() ){
do
{
int numColumn = cur.getColumnIndex(
"num"
);
int num = cur.getInt(numColumn);
}
while
( cur.moveToNext());
}
}
|