SQLiteOpenHelper 是安卓中创建数据库的一个帮助类,至少实现其中的onCreate和onUpgrade方法。
SQLiteOpenHelper 的方法:
方法 | 作用 |
---|---|
onCreate(SQLiteDatabase db) | 创建数据库时调用 |
onUpgrade( SQLiteDatabase db,int oldVersion , int newVersion ) | 更新数据库时调用 |
getReadableDatabase() | 创建或打开一个只读数据库 |
getWritableDatabase() | 创建或打开一个可写数据库 |
SQLiteOpenHelper的使用:
public class MySQLiteOpenHelper extends SQLiteOpenHelper{
private final static String DATABASE_NAME = "person.db";
private final static int DATABASE_VERSION = 1;
private final static String TABLENAME = "person";
private final static string ID = "id" ;
private final static String NAME= "name";
private final static String NUMBER= "number";
public MySQLiteOpenHelper(Context context, CursorFactory factory) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//创建数据库语句
String sql = "create table " + TABLE_NAME +" ( " + ID +" INTEGER primary key autoincrement, "
+ NAME+ " text, "+ NUMBER+ " text );" ;
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + TABLE_NAME ;
db.execSQL(sql);
onCreate(db);
}
}
public Cursor getCursor() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);
return cursor;
}
Cursor 的常用方法:
方法 | 作用 |
---|---|
getCount() | 数据总数 |
getColumnIndex(String columnName) | 获取列索引 |
isFirst() | 是否第一个条目 |
isLast() | 是否最后条目 |
moveToFirst() | 移动到第一个条目 |
moveToLast() | 移动到最后条目 |
moveToNext() | 移动到下一条 |
moveToPrevious() | 移动到前一条 |
/** * * @param column_1 * @param column_2 * @return */
public long insert ( String name, String number){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues(); //数据项
values.put( NAME, name);
values.put( NUMBER, number);
long row = db.insert(TABLE_NAME, null, values);
return row;
}
或用数据库语句来执行:
public long insert(String name , int number){
//插入操作的SQL语句
String sql = "insert into person(name, number) values ('" + name + "' , '" + number + "');" ;
return db.execSQL(sql);//执行SQL语句
}
/** * * @param delColumnValue 要删除的数据项中COLUMN_1 的值 */
public void deleteByName(String name){
SQLiteDatabase db = this.getWritableSQLiteDatabase();
String where = NAME+ "=?"; //删除的条件参数
String[] whereValues = { name}; //条件参数的值
db.delete(TABLENAME, where, whereValues);
}
或用数据库语句来执行:
public void delete(String name){
String sql= "delete from person where name= '" + name + "' ;" ;
db.execSQL(sql);
}
/** * * @param column_1_value修改的查询条件(字段值) * @param column_2 修改的字段 * @param column_2_value 修改的字段的值 */
public void update( String name, String number){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(NUMBER, number);
String whereClause = NAME+ " = ?"; //查询条件参数
String[] whereArgs= { name}; //查询条件的参数值
db.update(TABLE_NAME, values, whereClause , whereArgs);
}
用数据库语句来执行:
public void update( String name, String number){
String sql = "update [person] set number= '" + number + "' where name = '"+ name +"' ;" ;
db.execSQL(sql);
}