Android SQLite 开发教程(4): 读写数据库操作
2012-05-18 08:22
330 查看
有了数据库对象之后,可以使用execSQL 提供SQL语言来添加,删除,修改或查询数据库。除了通用的execSQL 之外,SQLiteDatabase 提供了 insert, update, delete ,query 方法来简化数据库的添加,删除,修改或查询操作。
此外SQLite不强制检测数据库的数据类型,通过DBAdapter 可以使用强数据类型来修改,删除数据等,这也是使用DBAdapter的一个好处:
这里我们先定义了一个TodoItem 类,表示一个Todo 项:
下面的方法提供使用TodoItem类型做参数使用添加,删除和修改TodoItem
其中ContentValues 定义了列名到列值的映射,类似于Hashtable。
SQLiteDatabase 的Query方法的一个定义如下:
public Cursorquery(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
table : 数据库名称
columns: 需要返回的列名称,
selection: 查询条件,为WHERE语句(不含WHERE)。
selectionArgs: 如果selection 中带有? ,这里可以给出? 的替代值。
groupBy: Group 语句除去GROUP BY。
having: Having语句除去Having
OrderBy: Order by 语句。
下面代码给出查询某个todoItem 项:
Query方法还有几个重载的方法,具体可以参见Android文档
此外SQLite不强制检测数据库的数据类型,通过DBAdapter 可以使用强数据类型来修改,删除数据等,这也是使用DBAdapter的一个好处:
这里我们先定义了一个TodoItem 类,表示一个Todo 项:
public class TodoItem { private String mTask; private Date mCreated; public String getTask(){ return mTask; } public Date getCreated(){ return mCreated; } public TodoItem(String task){ this(task,new Date(System.currentTimeMillis())); } public TodoItem(String task,Date created){ mTask=task; mCreated=created; } @Override public String toString(){ SimpleDateFormat sdf=new SimpleDateFormat("dd/mm/yy"); String dateString= sdf.format(mCreated); return "("+ dateString+ ")" + mTask; } }
下面的方法提供使用TodoItem类型做参数使用添加,删除和修改TodoItem
//insert a new task public long insertTask(TodoItem task){ ContentValues newTaskValues=new ContentValues(); //assign values for each row newTaskValues.put(KEY_TASK, task.getTask()); newTaskValues.put(KEY_CREATION_DATE, task.getCreated().getTime()); //insert row return mDb.insert(DATABASE_TABLE,null,newTaskValues); } public boolean removeTask(long rowIndex){ return mDb.delete(DATABASE_TABLE,KEY_ID+"="+rowIndex, null)>0; } public boolean updateTask(long rowIndex,String task){ ContentValues newValue=new ContentValues(); newValue.put(KEY_TASK, task); return mDb.update(DATABASE_TABLE, newValue, KEY_ID+"="+rowIndex, null)>0; }
其中ContentValues 定义了列名到列值的映射,类似于Hashtable。
SQLiteDatabase 的Query方法的一个定义如下:
public Cursorquery(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
table : 数据库名称
columns: 需要返回的列名称,
selection: 查询条件,为WHERE语句(不含WHERE)。
selectionArgs: 如果selection 中带有? ,这里可以给出? 的替代值。
groupBy: Group 语句除去GROUP BY。
having: Having语句除去Having
OrderBy: Order by 语句。
下面代码给出查询某个todoItem 项:
public Cursor getAllToDoItemsCursor(){ return mDb.query(DATABASE_TABLE, new String[]{KEY_ID,KEY_TASK,KEY_CREATION_DATE}, null, null, null, null, null); } public Cursor setCursorToToDoItem(long rowIndex) throws SQLException { Cursor result=mDb.query(DATABASE_TABLE, new String[]{KEY_ID,KEY_TASK}, KEY_ID+"="+rowIndex, null, null, null, null); if(result.getCount()==0 || !result.moveToFirst()){ throw new SQLException ("No to do item found for row:" + rowIndex); } return result; } public TodoItem getToDoItem(long rowIndex) throws SQLException { Cursor cursor=mDb.query(DATABASE_TABLE, new String[]{KEY_ID,KEY_TASK,KEY_CREATION_DATE}, KEY_ID+"="+rowIndex, null, null, null, null); if(cursor.getCount()==0 || !cursor.moveToFirst()){ throw new SQLException ("No to do item found for row:" + rowIndex); } String task=cursor.getString(TASK_COLUMN); long created=cursor.getLong(CREATION_DATE_COLUMN); TodoItem result=new TodoItem(task,new Date(created)); return result; }
Query方法还有几个重载的方法,具体可以参见Android文档
相关文章推荐
- Android SQLite 开发教程(3): 创建数据库
- PHP网站开发实例教程之知识点归纳2(操作数据库)
- 数据库开发工具Magic教程-基本操作(以Magic eDeveloper V10为例,其他版本会有差异)
- BREW开发教程(12):数据库操作
- Android SQLite 开发教程(5): 导出数据库到XML 文件
- 数据库开发基本操作-SQL Server 2005 视频教程下载地址
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
- HealthKit开发快速入门教程之HealthKit数据的操作
- java web面试技巧,数据库面试,java web轻量级开发面试教程
- Visual C# 2008+SQL Server 2005 数据库与网络开发--第4章 操作数据库
- Android开发学习之IO文件读写操作
- Yii Framework 开发教程(24) 数据库-DAO 示例
- YII Framework学习教程-YII的Model-数据库操作2-Relational Active Record翻译补全
- 使用android快速开发框架afinal的FinalDb操作android数据库
- YII Framework学习教程-YII的Model-数据库操作5-数据迁移官方翻译
- Android NFC 开发教程(3): Mifare Tag 读写示例
- Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作
- sqlite3数据库的操作(iphone开发)
- Node.js开发之访问Redis数据库教程
- 数据库开发基本操作-使用VS2008服务器资源管理器操作数据库