Android SQlite使用实践Demo
2016-03-22 10:31
495 查看
整理了工作中用到的数据库操作方法,并写了一个demo实现了SQlite数据库的增删改查。
demo地址:android数据库实践demo
先上效果图:
![](http://img.blog.csdn.net/20160322103524980?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
下面贴一些关键代码:
DBHelper:
MessageDao:
Message对象:
使用Dao来对数据库进行操作:下面是具体的增删改查:
在有了Dao来操作数据库之后,数据库的使用就变得特别简便。
最后推荐篇很好的blog,我是从这上面学习的:
demo地址:android数据库实践demo
先上效果图:
下面贴一些关键代码:
DBHelper:
public class DBHelper extends SQLiteOpenHelper { private final static String DB_NAME = "test.db"; private final static int TABLE_VERSION = 1; public DBHelper(Context context) { super(context, DB_NAME, null, TABLE_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { //创建表 sqLiteDatabase.execSQL("create table if not exists " + Constants.MESSAGE_TABLE_NAME + "(id integer primary key autoincrement, message text, time text)"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
MessageDao:
public class MessageDao { private SQLiteDatabase db; public MessageDao(Context context){ DBHelper dbHelper = new DBHelper(context); db = dbHelper.getWritableDatabase(); } /** * 关闭数据库 */ public void closeDB(){ db.close(); } /** * 向表中插入数据 * * @param message 数据 */ public void insert(Message message) { db.beginTransaction(); try { db.execSQL("insert into " + Constants.MESSAGE_TABLE_NAME + " values (null, ?, ?)", new Object[]{message.getMessage(), message.getTime()}); db.setTransactionSuccessful(); } finally { db.endTransaction(); } } /** * 清空表数据 */ public void clear() { db.delete(Constants.MESSAGE_TABLE_NAME, "", new String[]{}); } /** * 通过ID删除指定数据 * * @param id ID */ public void delete(int id){ db.delete(Constants.MESSAGE_TABLE_NAME, "id = ?", new String[]{String.valueOf(id)}); } /** * 通过ID更新数据 * * @param message 数据 * @param id ID */ public void update(Message message, int id) { ContentValues cv = new ContentValues(); cv.put("time", message.getTime()); db.update(Constants.MESSAGE_TABLE_NAME, cv, "id = ?", new String[]{String.valueOf(id)}); } /** * 查询 * * @return Message列表 */ public List<Message> query() { ArrayList<Message> messageList = new ArrayList<>(); Cursor c = queryCursor(Constants.MESSAGE_TABLE_NAME); while (c.moveToNext()) { Message message = new Message(); message.setMessage(c.getString(c.getColumnIndex("message"))); message.setTime(c.getString(c.getColumnIndex("time"))); message.setId(c.getInt(c.getColumnIndex("id"))); messageList.add(message); } c.close(); return messageList; } /** * 查询指针 * * @param tableName:表名 * @return Cursor */ public Cursor queryCursor(String tableName) { return db.rawQuery("select * from " + tableName, null); } }
Message对象:
public class Message { private int id; private String message; private String time; public Message(){ } public Message(String message, String time){ this.message = message; this.time = time; } public void setId(int id) { this.id = id; } public int getId() { return id; } public void setMessage(String message) { this.message = message; } public String getMessage() { return message; } public void setTime(String time) { this.time = time; } public String getTime() { return time; } }
使用Dao来对数据库进行操作:下面是具体的增删改查:
public void insert(){ Message message = new Message("消息", getCurrentTime()); dao.insert(message); // query(); } public void delete(){ dao.delete(Integer.valueOf(etId.getText().toString())); // query(); } public void update(){ Message message = new Message("新消息", getCurrentTime()); dao.update(message, Integer.valueOf(etId.getText().toString())); // query(); } public void query(){ List<Message> messageList = dao.query(); dBadapter.setMessageList(messageList); }
在有了Dao来操作数据库之后,数据库的使用就变得特别简便。
最后推荐篇很好的blog,我是从这上面学习的:
Android中SQLite应用详解
相关文章推荐
- Android报警告:this handler class should be static...
- Android源码分析:Java的Media Scanner层(阅读笔记)
- Android程序目录结构
- android 中MotionEvent中的getX(),getY()方法与getRawX(),getRawY的区别
- Android程序间的跳转问题
- 两个android程序间的相互调用(apk互调)
- Android WebView的Js对象注入漏洞解决方案
- android自动更新功能
- LoadingProgressBar(类似SwipeRefreshLayout的加载进度指示器)
- HelloAndroid
- android全屏去掉title栏的多种实现方法
- Android攻城狮学习笔记—入门篇一
- Android ListView item中有按钮(Button)不能点击或者条目不能点击的问题
- Android之ProgressBar详解---自定义ProgressBar
- Android中ListView下拉刷新的实现
- android中的内外部存储
- 关于Linearlayout中控件设置为其底部的问题,android:layout_gravity="bottom"没效果
- Android使用缓存优化ListView
- Android系列---JSON数据解析
- android源码分析——从button的点击事件看回调机制