1
2
3
4
5
6
|
Context.createDatabase(
String name,
//
int
version,
//
int
mode,
//
CursorFactory factory
//
)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
SQLiteDatabase mydataBase=SQLiteDatabase.create(
new
CursorFactory(){
//创建一个数据库
//工厂类,一个可选工厂类,当查询时调用来实例化一个光标
public
Cursor newCursor(SQLiteDatabase db,
SQLiteCursorDriver masterQuery, String editTable,
SQLiteQuery query) {
return
null
;
}
});
SQLiteDatabase myDataBase=
this
.openOrCreateDatabase(
"myDataBase.db"
,
MODE_PRIVATE,
new
CursorFactory(){
//创建新的数据库,名称myDatabase,模式MODE_PRIVATE,游标工厂
//工厂类,一个可选工厂类,当查询时调用来实例化一个光标
public
Cursor newCursor(SQLiteDatabase db,
SQLiteCursorDriver masterQuery, String editTable,
SQLiteQuery query) {
return
null
;
}
});
|
1
2
3
4
5
|
SQLiteDatabase my_DataBase=
this
.openOrCreateDatabase(
"myDateBase.db"
,
MODE_PRIVATE,
null
);
my_DataBase.close();
//不要忘记关闭数据库
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
private
SQLiteDatabase mSQLiteDatabase=
null
;
// 打开已经存在的数据库
mSQLiteDatabase =
this
.openOrCreateDatabase(DATABASE_NAME, MODE_PRIVATE,
null
);
/* 在数据库mSQLiteDatabase中创建一个表 */
mSQLiteDatabase.execSQL(CREATE_TABLE);
/* 删除数据库 */
this.deleteDatabase(DATABASE_NAME);
/* 退出时,不要忘记关闭 */
mSQLiteDatabase.close();
/* 删除一个表 */
mSQLiteDatabase.execSQL("DROP TABLE " + TABLE_NAME);
/* 更新一条数据 */
ContentValues cv =
new
ContentValues();
cv.put(TABLE_NUM, miCount);
cv.put(TABLE_DATA,
"修改后的数据"
+ miCount);
mSQLiteDatabase.update(TABLE_NAME, cv, TABLE_NUM +
"="
+ Integer.toString(miCount -
1
),
null
);
UpdataAdapter();
//更新界面
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
/* 向表中添加一条数据 */
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM, miCount);
cv.put(TABLE_DATA, "测试数据库数据" + miCount);
mSQLiteDatabase.insert(TABLE_NAME, null, cv);
miCount++;
UpdataAdapter(); //更新界面
/* 从表中删除指定的一条数据 */
mSQLiteDatabase.execSQL(
"DELETE FROM "
+ TABLE_NAME +
" WHERE _id="
+ Integer.toString(miCount));
miCount--;
if
(miCount <
0
){
miCount =
0
;
}
UpdataAdapter();
//更新界面
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
/* 更新视图显示 */
public void UpdataAdapter(){
// 获取数据库Phones的Cursor
Cursor cur = mSQLiteDatabase.query(TABLE_NAME, new String[] { TABLE_ID, TABLE_NUM, TABLE_DATA }, null, null, null, null, null);
miCount = cur.getCount();
if (cur != null && cur.getCount() >= 0) {
// ListAdapter是ListView和后台数据的桥梁
ListAdapter adapter = new SimpleCursorAdapter(this,
// 定义List中每一行的显示模板
// 表示每一行包含两个数据项
android.R.layout.simple_list_item_2,
// 数据库的Cursor对象
cur,
// 从数据库的TABLE_NUM和TABLE_DATA两列中取数据
new String[] { TABLE_NUM, TABLE_DATA },
// 与NAME和NUMBER对应的Views
new int[] { android.R.id.text1, android.R.id.text2 });
/* 将adapter添加到m_ListView中 */
m_ListView.setAdapter(adapter);
} }
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
//为创建Cursor(游标),必须执行查询,要么通过SQL使用rawQuery()方法
//或是更精心设计的方法,像query()方法
Cursor cur=my_DataBase.rawQuery(
"SELECT * FORM test"
,
null
);
if
(cur!=
null
){
//游标不为空
//返回给定名称的列的基于0开始的index,如果该属性列不存在则返回-1
//通过它们的index来检索属性值
int
numColumn=cur.getColumnIndex(
"someNumber"
);
if
(cur.moveToFirst()){
//cur.moveToFirst()让游标指向第一行,如果游标指向第一行,则返回true
do
{
int
num=cur.getInt(numColumn);
//获得当前行该属性的值
/*Cursor提供了不同的方法来回索不同的数据类型
例如getInt(int index)/getString(int index)等等*/
/*做一些事情*/
} while (cur.moveToNext());
/*游标移动到下一行,如果游标已经通过了结果集中的最后,
即没有行可以移动时,则返回false*/
//其他可能移动的是previous() 和first()方法
}
}
|
01
02
03
04
05
06
07
08
09
10
|
SQLiteDatabase db = ....;
db.beginTransaction();
//开始事务
try
{
db.execSQL(
"insert into person(name, age) values(?,?)"
,
new
Object[]{“lxt008",
4
});
db.execSQL(
"update person set name=? where personid=?"
,
new
Object[]{“lxt008",
1
});
db.setTransactionSuccessful();
//调用此方法会在执行到endTransaction() 时提交当前事务,如果不调用此方法会回滚事务
}
finally
{
db.endTransaction();
//由事务的标志决定是提交事务,还是回滚事务
}
db.close();
|