Android学习笔记----SQLite数据库基本用法
来源:互联网 发布:java获取tomcat端口号 编辑:程序博客网 时间:2024/04/27 03:07
/*************************************************************************/
数据库
Android 为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper 帮助类,借助这个类就可以非常简单地对数据库进行创建和升级
SQLiteOpenHelper 具有的方法
onCreate() : 抽象方法,需在子类中实现,在该方法中实现创建数据库的逻辑
onUpgrade(): 抽象方法,需在子类中实现,在该方法中实现升级数据库的逻辑
getWritableDatabase() : 实 例 方 法,
创建或打开一个现有的数据库(如果数据库已存在
则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象,
getReadableDatabase() : 实 例 方 法,
创建或打开一个现有的数据库(如果数据库已存在
则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象,
getWritableDatabase()跟getReadableDatabase()的区别:
当数据库不可写入的时候(如磁盘空间已满) getReadableDatabase()方法返回的对
象将以只读的方式去打开数据库,而 getWritableDatabase()方法则将出现异常
构造方法:
SQLiteOpenHelper 中有两个构造方法可供重写,一般使用参数少一点的那个构造方法即
可。
构造方法的参数
第一个参数 Context,上下文
第二个参数 创建的数据库的名称
第三个参数 在查询数据的时候返回一个自定义的 Cursor,一般都是传入 null
第四个参数 当 前 数 据 库 的 版 本 号,可 用 于 对 数 据 库 进 行 升 级 操 作
构 建 出SQLiteOpenHelper 的实例之后,再调用它的 getReadableDatabase()或 getWritableDatabase()方法就能够创建数据库了,数据库文件会存放在/data/data/<package name>/databases/目录下。此时, 重写的 onCreate()方法也会得到执行, 所以通常会在这里去处理一些创建表的逻辑。
新建一个类继承 SQLiteOpenHelper,给该类创建构造方法
public class CoolWeatherOpenHelper extends SQLiteOpenHelper {/* * Province省份 * * */public static final String CREATE_PROVINCE = "create table Province(id integer primary key autoincrement,province_name text,province_code text)";/* * City城市 * * */public static final String CREATE_CITY = "create table City(id integer primary key autoincrement,city_name text,city_code text,province_code text)";/* * Country县 * * */public static final String CREATE_COUNTRY = "create table Country(id integer primary key autoincrement,country_name text,country_code text,city_code text)"; public CoolWeatherOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_PROVINCE); db.execSQL(CREATE_CITY); db.execSQL(CREATE_COUNTRY); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}
添加数据
CoolWeatherOpenHelper dbHelper = new CoolWeatherOpenHelper(this, "cool_weather", null, 1);SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();// 开始组装第一条数据values.put("province_name", "山东");values.put("province_code", "07");db.insert("Province", null, values); // 插入第一条数据values.clear();// 开始组装第二条数据values.put("province_name", "山西");values.put("province_code", "09");db.insert("Province", null, values); // 插入第二条数据
更新数据
SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("province_name", "湖北");db.update("Province", values, "province_code = ?", new String[] {"09"});
删除数据
SQLiteDatabase db = dbHelper.getWritableDatabase();db.delete("Province", "province_code = ?", new String[] {"09"});
查询数据
SQLiteDatabasedb = dbHelper.getWritableDatabase();Cursor cursor = db.query("Province", null, null, null, null, null, null);if (cursor.moveToFirst()) {do { String priovice_name = cursor.getString(cursor.getColumnIndex("province_name")); String province_code = cursor.getString(cursor.getColumnIndex("provice_code")); Log.d("MainActivity", "province name is " + priovice_name); Log.d("MainActivity", "province code is " + province_code); } while (cursor.moveToNext());}cursor.close();
数据库中的事务
SQLiteDatabase db = dbHelper.getWritableDatabase();db.beginTransaction(); // 开启事务try { .............................................................. .............................................................. ..............................................................db.setTransactionSuccessful(); // 事务已经执行成功} catch (Exception e) { e.printStackTrace();} finally { db.endTransaction(); // 结束事务}
注:为了确保endTransaction()方法一定会执行,将该方法放在finally方法里面
Android 已经给我们提供了很多非常方便的 API 用于操作数据库,不过总会有一些人不习惯去使用这些辅助性的方法,而是更加青睐于直接使用 SQL 来操作数据库
添加数据
db.execSQL("insert into Province (provice_name, province_code) values(?, ?)",new String[] { "山东", "07" });
更新数据
db.execSQL("update Province set province_code = ? where province_name = ?", new String[] { "10", "山西" });
删除数据
db.execSQL("delete from Province where province_code = ?", new String[] { "10" });
查询数据
db.rawQuery("select * from Book", null);
0 0
- Android学习笔记----SQLite数据库基本用法
- Android SQLite数据库学习笔记
- android学习笔记--sqlite数据库
- SQLite数据库基本用法
- android SQLite基本用法
- Android SQLite基本用法
- Android ,SQLite基本用法
- Android学习笔记十:android SQLite数据库基本操作增、删、改、查速成
- android 数据库SQLite用法
- android学习笔记————SQLite数据库的基本使用
- android学习笔记---SQLite数据库的使用
- 【Android学习笔记】SQLite数据库存储
- Android学习笔记 - 数据库篇 (SQLite)
- android学习笔记之SQLite数据库存储
- Android学习笔记 - 数据库篇 (SQLite)
- 学习笔记 android数据库之 Sqlite
- android学习笔记之SQLite数据库
- Android学习笔记---SQLite数据库 api
- String类为什么是final的。
- opencv学习笔记(二十六)——相机标定之棋盘提取角点
- String,StringBuffer与StringBuilder的区别及应用场景
- Fragment与Activity
- nohup命令的用法
- Android学习笔记----SQLite数据库基本用法
- Intent与pendingIntent的区别
- 电表使用集锦
- Android——adb工具的使用
- research of action recognition and classfication in still images
- sublime sublime text3 提示[decode error - output not utf-8]
- 蓝牙4.0
- c++构造函数/复制构造/赋值函数
- VirtualBox注册虚拟机时,Cannot register the image ‘C:\Proqram FiIes\OracIe\VirtuaIBox\VBoxGuestAdditionsiso