Android数据存储之Sqlite数据库的俩种使用方式
2016-12-25 18:20
525 查看
一概述
在Android开发中数据存储包括 SharedPreference、文件存储、数据库存储、ContentProvider、网络存储,本文讲述使用Sqlite数据库存储的俩种基本使用方式
1、第一种使用SQL语句实现
一、DBhelper类
2、封装一个泛型的增删改查的接口
3、根据存储的JavaBean写实现类
写好以上的类后就可以在访问到网络的数据后存储在数据库中了,把从服务器下载的图片资源可以保存在本地。
sql语句
1、创表语句 : create table 表名( _id Integer primary key autoincrement,user_id Integer,user_name text,…..字段名 数据类型)
2、删表语句:drop table if exists 表名
3、查询语句:select*from 表名 where id = ?
4、删除语句:delete from 表名 where id = ?
5、插入语句:insert into 表名 (字段名….)values(?,?,?…)
6、更新语句:update 表名 set user_name = ? where id = ?
第二种方式使用SQLiteDatabase中方法
1、db.insert();
2、db.delete();
3、db.update();
4、db.query();
在Android开发中数据存储包括 SharedPreference、文件存储、数据库存储、ContentProvider、网络存储,本文讲述使用Sqlite数据库存储的俩种基本使用方式
1、第一种使用SQL语句实现
编写代码逻辑:使用SqliteOpenHelper类创建一个数据库 创建一个访问数据库增删改查的的接口 封装一个访问数据库增删改查的具实现类
一、DBhelper类
package db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBhelper extends SQLiteOpenHelper { private static DBhelper mDbHelper = null; private static final String db_name = "friend.db"; private static final int version = 1; private static final String CREATE_MESSAGE_TABLE = "create table message_info(_id integer primary key autoincrement," + "message_id integer,message_userhead text,message_context text,message_imagename text," + "message_username text,message_time text)"; private static final String DORP_MESSAGE_TABLE = "drop table if exists message_info"; private DBhelper(Context context) { super(context, db_name, null, version); } public static DBhelper getInstance(Context context) { if (mDbHelper == null) { synchronized (new Object()) { if (mDbHelper == null) { mDbHelper = new DBhelper(context); } } } return mDbHelper; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_MESSAGE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(DORP_MESSAGE_TABLE); db.execSQL(CREATE_MESSAGE_TABLE); } }
2、封装一个泛型的增删改查的接口
package db; import java.util.List; public interface myDbServer<T> { //插入多条 public void insertMore(List<T> params); //插入一条 public void insertOne(T params); //删除一条 public void deleteOne(int params); //查询多条 public List<T> getMore(); //查询一条 public T getOne(int parmas); }
3、根据存储的JavaBean写实现类
package db; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import java.util.LinkedList; import java.util.List; import Bean.MessageBean; public class MessageDao implements myDbServer<MessageBean> { private DBhelper mDBhelper = null; private Context context = null; public MessageDao(Context context) { this.context = context; mDBhelper = DBhelper.getInstance(this.context); } /** * 插入多条说说信息 * * @param params */ @Override public void insertMore(List<MessageBean> params) { String sql = "insert into message_info(message_id,message_username,message_userhead,message_context," + "message_time,message_imagename)" + "values(?,?,?,?,?,?)"; SQLiteDatabase db = mDBhelper.getWritableDatabase(); db.delete("message_info",null,null); for (MessageBean messageBean : params) { db.execSQL(sql, new Object[]{messageBean.getId(), messageBean.getUserName(), messageBean.getUserHead(), messageBean.getContext(), messageBean.getTime(), messageBean.getImageName()}); } db.close(); } /** * 插入一条说说信息 * * @param params */ @Override public void insertOne(MessageBean params) { String sql = "insert into message_info(message_id,message_username,message_userhead,message_context," + 4000 "message_time,message_imagename)" + "values(?,?,?,?,?,?)"; SQLiteDatabase db = mDBhelper.getWritableDatabase(); db.execSQL(sql, new Object[]{params.getId(), params.getUserName(), params.getUserHead(), params.getContext(), params.getTime(), params.getImageName()}); db.close(); } /** * 删除一条说说信息 * * @param params */ @Override public void deleteOne(int params) { String sql = "delete from message_info where message_id = ? "; SQLiteDatabase db = mDBhelper.getWritableDatabase(); db.execSQL(sql, new Object[]{params}); db.close(); } /** * 获取多条说说信息 * * @return */ @Override public List<MessageBean> getMore() { String sql = "select*from message_info"; List<MessageBean> list = new LinkedList<MessageBean>(); SQLiteDatabase db = mDBhelper.getReadableDatabase(); Cursor cursor = db.rawQuery(sql, null); while (cursor.moveToNext()) { MessageBean messageBean = new MessageBean(); messageBean.setContext(cursor.getString(cursor.getColumnIndex("message_context"))); messageBean.setImageName(cursor.getString(cursor.getColumnIndex("message_imagename"))); messageBean.setUserHead(cursor.getString(cursor.getColumnIndex("message_userhead"))); messageBean.setUserName(cursor.getString(cursor.getColumnIndex("message_username"))); messageBean.setTime(cursor.getString(cursor.getColumnIndex("message_time"))); messageBean.setId(cursor.getInt(cursor.getColumnIndex("message_id"))); list.add(messageBean); } cursor.close(); db.close(); return list; } /** * 获取一条信息 * * @param parmas * @return */ @Override public MessageBean getOne(int parmas) { String SQL = "select*from message_info where message_id = ?"; SQLiteDatabase db = mDBhelper.getReadableDatabase(); Cursor cursor = db.rawQuery(SQL, new String[]{parmas + ""}); MessageBean messageBean = new MessageBean(); messageBean.setContext(cursor.getString(cursor.getColumnIndex("message_context"))); messageBean.setImageName(cursor.getString(cursor.getColumnIndex("message_imagename"))); messageBean.setUserHead(cursor.getString(cursor.getColumnIndex("message_userhead"))); messageBean.setUserName(cursor.getString(cursor.getColumnIndex("message_username"))); messageBean.setTime(cursor.getString(cursor.getColumnIndex("message_time"))); messageBean.setId(cursor.getInt(cursor.getColumnIndex("message_id"))); cursor.close(); db.close(); return messageBean; } }
写好以上的类后就可以在访问到网络的数据后存储在数据库中了,把从服务器下载的图片资源可以保存在本地。
sql语句
1、创表语句 : create table 表名( _id Integer primary key autoincrement,user_id Integer,user_name text,…..字段名 数据类型)
2、删表语句:drop table if exists 表名
3、查询语句:select*from 表名 where id = ?
4、删除语句:delete from 表名 where id = ?
5、插入语句:insert into 表名 (字段名….)values(?,?,?…)
6、更新语句:update 表名 set user_name = ? where id = ?
第二种方式使用SQLiteDatabase中方法
1、db.insert();
2、db.delete();
3、db.update();
4、db.query();
相关文章推荐
- Android数据的四种存储方式之SQLite数据库
- Android学习 —— 数据的存储与访问方式三: SQLite数据库
- Android使用嵌入式关系型SQLite数据库存储数据
- android(18)_数据存储与访问_SQLite数据库_使用SQLiteDatabase操作SQLite数据库及事务
- [Android] 数据存储五种方式使用与总结
- 初学Android,数据存储之使用SQLite数据库(四十五)
- Android数据的四种存储方式之SQLite数据库
- Android中数据的存储方式(二)—SQLite数据库
- Android笔记使用嵌入式关系型SQLite数据库存储数据
- android数据存储方式-----------使用ContentProvider存储数据
- Android数据存储之使用SQLite数据库存储数据
- android基础--使用嵌入式关系型SQLite数据库存储数据
- android(19)_数据存储与访问_SQLite数据库_使用SQLiteDatabase提供的增删改查方法
- android学习记录3(数据存储的方式:sqlite、sp、存文件。listview简单使用)
- Android数据的几种存储方式---------SharePreferences(轻量的以键值对) 的使用
- Android中使用嵌入式关系型SQLite数据库存储数据
- [Android] 数据存储五种方式使用与总结
- 初学Android,数据存储之使用SQLite数据库(四十六)
- Android平台使用SQLite数据库存储数据
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)