Android开发总结笔记 SQLiteDataBase 2-3
2015-12-25 10:25
375 查看
与SQLiteDataBase相关的几个类
SQLiteOpenHelper:继承这个类,进行重写数据库的创建和更新方法,获取数据库对象,关闭数据库
SQLiteDataBase:数据库访问类,通过这个类做一些增删改查的操作
Cursor:游标,可以理解为结果集
继承了SQLiteOpenHelper之后,需要实现两个方法
onCreate:第一次启动应用用于创建数据库调用的方法
onUpdrade:当数据库版本号发生变化的时候回调的方法,用于数据库更新
[/code]
增删改查
[/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事务
写在事务中的操作,如果有一个没有执行,所有操作都会回滚
[/code]
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]
相关文章推荐
- Android开发总结笔记 External&Internal Storage 2-2
- Android开发总结笔记 SharePreference(偏好参数) 2-1
- MPAndroidChart开源图表库(一)之饼状图
- android的progressbar修改背景颜色跟进度条颜色
- Android RSA加密解密
- Android应用设置全屏的方法
- (转)最强Android模拟器genymotion的安装与配置
- Android 不能退出的解释(android.os.Process.killProcess(android.os.Process.myPid()))
- Android 属性总结
- (转)Android SlidingTabLayout定制分割线和指示条颜色
- Android Material Design的FloatingActionButton,Snackbar和CoordinatorLayout
- Android5.X (五) : Activity的跳转效果
- Android数据库高手秘籍(三)——使用LitePal升级表
- Android Material Design:ViewPager与android.support.design.widget.TabLayout双向交互联动切换
- Android Native/Tombstone Crash Log 详细分析
- Android studio 添加so文件的方法
- Android数据库-开源LitePal (二)
- Android Material Design:滑动指示选项卡android.support.design.widget.TabLayout的简单使用
- 使用android.support.design.widget.TabLayout出现java.lang.reflect.InvocationTargetException
- 关于Activity回收造成View选中不对应的问题