您的位置:首页 > 移动开发 > Android开发

Android开发总结笔记 SQLiteDataBase 2-3

2015-12-25 10:25 375 查看
与SQLiteDataBase相关的几个类

SQLiteOpenHelper:继承这个类,进行重写数据库的创建和更新方法,获取数据库对象,关闭数据库

SQLiteDataBase:数据库访问类,通过这个类做一些增删改查的操作

Cursor:游标,可以理解为结果集

继承了SQLiteOpenHelper之后,需要实现两个方法

onCreate:第一次启动应用用于创建数据库调用的方法

onUpdrade:当数据库版本号发生变化的时候回调的方法,用于数据库更新

public class DataBase extends SQLiteOpenHelper {

public DataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {

super(context, name, factory, version);

}


@Override

public void onCreate(SQLiteDatabase db) {


}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


}

}

[/code]

增删改查

public class MainActivity extends AppCompatActivity {

private SQLiteDatabase mSqLiteDatabase;

private DataBase mDataBase;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

DataBase dataBase = new DataBase(this, "database.db", null, 1);

mSqLiteDatabase = dataBase.getWritableDatabase();

}


private void insert(){

ContentValues contentValues=new ContentValues();

contentValues.put("name","me");

mSqLiteDatabase.insert("person",null,contentValues);

}

private void  query(){

//参数依次是:表名,列名,where约束条件,where中占位符提供具体的值,指定group by的列,进一步约束,指定查询结果的排序方式

Cursor cursor = mSqLiteDatabase.query("person", null, null, null, null, null, null);

if (cursor.moveToFirst()) {

    do {

int pid = cursor.getInt(cursor.getColumnIndex("personid"));

String name = cursor.getString(cursor.getColumnIndex("name"));

} while (cursor.moveToNext());

}

cursor.close();

}

private void update(){

ContentValues values = new ContentValues();

values.put("name", "嘻嘻~");

//参数依次是表名,修改后的值,where条件,以及约束,如果不指定三四两个参数,会更改所有行

mSqLiteDatabase.update("person", values, "name = ?", new String[]{"呵呵~2"});

}

private void delete(){

//参数依次是表名,以及where条件与约束

mSqLiteDatabase.delete("person", "personid = ?", new String[]{"3"});

}

}

[/code]

使用SQL语句相关API

execSQL(SQL,Object[]):使用带占位符的SQL语句,这个是执行修改数据库内容的sql语句用的

rawQuery(SQL,Object[]):使用带占位符的SQL查询操作 另外前面忘了介绍下Curosr这个东西以及相关属性,这里补充下:—Cursor对象有点类似于JDBC中的ResultSet,结果集!使用差不多,提供一下方法移动查询结果的记录指针

move(offset):指定向上或者向下移动的行数,整数表示向下移动;负数表示向上移动!

moveToFirst():指针移动到第一行,成功返回true,也说明有数据

moveToLast():指针移动到最后一样,成功返回true;

moveToNext():指针移动到下一行,成功返回true,表明还有元素!

moveToPrevious():移动到上一条记录

getCount( )获得总得数据条数

isFirst():是否为第一条记录

isLast():是否为最后一项

moveToPosition(int):移动到指定行

SQLite事务

写在事务中的操作,如果有一个没有执行,所有操作都会回滚
mSqLiteDatabase.beginTransaction();

try{

    //语句

    mSqLiteDatabase.setTransactionSuccessful();

}finally {

    mSqLiteDatabase.endTransaction();

}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: