SQLite数据库基本接口介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
update的代码实现
// 改 DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); ContentValues values = new ContentValues(); String name = edName.getText().toString(); String age = edAge.getText().toString(); values.put("age", age); int row = db.update("person", values, "name=?", new String[]{name}); db.close();
就只能读而不能写,倘若使用的是getWritableDatabase() 方法
就会出错。
getReadableDatabase()
先以读写方式打开数据库,如果数据库的磁盘空间满了,就会
打开失败,当打开失败后会继ຫໍສະໝຸດ Baidu尝试以只读方式打开数据库。
SQLiteDatabase
(返回值)方法名 (int) delete(String table,String whereClause,String[] whereArgs) (long) insert(String table,String nullColumnHack,ContentValues values) 方法描述 删除数据行的便捷方法 添加数据行的便捷方法
select的代码实现
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>(); DBHelper helper = new DBHelper(this); SQLiteDatabase db = helper.getReadableDatabase(); String age = edAge.getText().toString(); Cursor cursor = db.query("person", // 表名 new String[] { "_id", "name", "age" }, // 列名 "age=?" // where模板 , new String[] { age },// -占位符的值 null,// 分组 null, // having null);// 排序 "age desc" // 解析结果集 while (cursor.moveToNext()) {// 移到下一行 HashMap<String, Object> map = new HashMap<String, Object>(); map.put("id", cursor.getString(0)); map.put("name", cursor.getString(1)); map.put("age", cursor.getString(2)); list.add(map); } cursor.close(); db.close(); listView.setAdapter(new SimpleAdapter(this, list, R.layout.item, new String[] { "id", "name", "age" }, new int[] { R.id.id, R.id.name, R.id.age }));
移动到第一条记录 移动到最后一条记录 移动到指定的记录 移动到下一条记录 移动到上一条记录
getColumnIndex(String columnName) 获得指定列索引的int类型值
全查询的代码实现
//全查询 List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from person where id=?", new String[]{“1”});
SQLite数据库
数据库DB (C/S)
移动客户端
服务器
SQLite
SqlServer Oracle MySQL
SQLite数据库的特点
1.轻量级 使用 SQLite 只需要带一个动态库,而且尺寸相当小。 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
Cursor 游标(指针)
方法名称 getCount() isFirst() 总记录条数 判断是否第一条记录 方法描述
isLast()
moveToFirst() moveToLast() move(int offset) moveToNext() moveToPrevious()
判断是否最后一条记录
while (cursor.moveToNext()) { Map<String,Object> map = new HashMap<String, Object>(); map.put("id", cursor.getString(0)); map.put("name", cursor.getString(1)); map.put("age", cursor.getString(2)); list.add(map); } cursor.close(); db.close(); listView.setAdapter(new SimpleAdapter( this, list, R.layout.item, new String[]{"id","name","age"}, new int[]{R.id.id,R.id.name,R.id.age} ));
delete的代码实现
// 删 DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); String name = edName.getText().toString().trim(); int row = db.delete("person", "name=?", new String[]{name}); db.close();
insert的代码实现
// 增 DBHelper dbHelper = new DBHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); ContentValues values = new ContentValues(); values.put("name", edName.getText().toString().trim()); values.put("age", edAge.getText().toString().trim()); db.insert("person", null, values); db.close();
案例:DBDemo
开发步骤:
1. 2. 3. 4. 创建项目 搭建布局 继承SQLiteOpenHelper 实现增删改查
搭建布局
main.xml item.xml
android:windowSoftInputMode="stateHidden|stateAlwaysHidden"
SQLiteOpenHelper
场景: 收藏新闻
新闻标题 北京警方公开... 北京申冬奥代... 新闻图片 …20150609011.jpg …20150609012.jpg 新闻链接 http://www.qian... http://www.sina... 发布时间 2015-06-09 09:30 2015-06-09 09:52
(int) update(String table, ContentValues values, String whereClause, String[] 更新数据行的便捷方法 whereArgs) (void) execSQL(String sql) 执行一个SQL语句,可以是一个select或 其他的sql语句 (void) close() (Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) (Cursor) rawQuery(String sql, String[] selectionArgs) 关闭数据库 查询指定的数据表返回一个带游标的 数据集 运行一个预置的SQL语句,返回带游标 的数据集(与上面的语句最大的区别 就是防止SQL注入)
SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本 的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。
方法名 SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version) onCreate(SQLiteDatabase db) onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion) getWritableDatabase() 以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库 第一次创建数据库时调用 版本更新时调用 构造方法 方法描述
3.隔离性 SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方 便管理和维护。
4.跨平台 SQLite 目前支持大部分操作系统 5.多语言接口 SQLite 数据库支持多语言编程接口。 6.安全性 SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个 进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。