Android数据库操作的两种方式
Android操作数据库分文两种方式,一种是自己写sql脚本,另外一种是调用Android提供的系统函数,下面做详细说明:
第一种:自己写SQL语句,分为以下几步:
1、先建立一个数据访问帮助类
package com.dt.sphone.dao.helper; import com.dt.sphone.util.Constant; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * <短信数据库操作类> * <功能详细描述> */ public class MessageSQLiteOpenHelper extends SQLiteOpenHelper { /** * 构造数据库对象 * 定义了数据库的名称、查询的结果集游标、数据库版本 * @param context 上下文对象 * <默认构造函数> */ public MessageSQLiteOpenHelper(Context context) { super(context, Constant.MESSAGE_DATABASE_NAME, null, Constant.DATABASE_VERSION); } /** * 数据库第一次被创建时调用的方法 * @param db 被创建的数据库对象 * {@inheritDoc} */ @Override public void onCreate(SQLiteDatabase db) { String createSql = "create table message (id integer primary key autoincrement, sessionId varchar(50), msgContent text) "; db.execSQL(createSql); } /** * {@inheritDoc} */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
2、建立一个Dao,里面包含增删改查操作:
package com.dt.sphone.dao; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.dt.sphone.dao.helper.MessageSQLiteOpenHelper; import com.dt.sphone.model.MessageModel; public class MessageDao { /** * 数据库访问帮助类 */ private MessageSQLiteOpenHelper helper; /** * 构造数据库访问帮助类 * @param context 上下文对象 * <默认构造函数> */ public MessageDao(Context context) { helper = new MessageSQLiteOpenHelper(context); } /** * <添加或修改操作> * <功能详细描述> * @param sql 操作的SQL语句 * @see [类、类#方法、类#成员] */ public void insertOrUpdate(String sql) { SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL(sql); db.close(); } /** * <添加或修改操作> * <功能详细描述> * @param sql 操作的SQL语句 * @param params 参数值数组 * @see [类、类#方法、类#成员] */ public void insertOrUpdate(String sql, Object[] params) { SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL(sql, params); db.close(); } /** * <删除操作> * <功能详细描述> * @param sql 操作的SQL语句 * @see [类、类#方法、类#成员] */ public void delete(String sql) { SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL(sql); db.close(); } /** * <删除操作> * <功能详细描述> * @param sql 操作的SQL语句 * @see [类、类#方法、类#成员] */ public void delete(String sql, Object[] params) { SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL(sql, params); db.close(); } /** * <获取所有短信列表> * <功能详细描述> * @param sql 查询SQL语句 * @param params 查询参数数组,如果没有则填null * @return * @see [类、类#方法、类#成员] */ public List<MessageModel> getAllMessageForParams(String sql, Object[] params) { // 存储查询结果的列表对象 List<MessageModel> msgList = new ArrayList<MessageModel>(); // 获取数据库对象 SQLiteDatabase db = helper.getReadableDatabase(); // 查询数据库 Cursor cursor = db.rawQuery(sql, null); // 遍历查询结果 MessageModel msg = null; while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String sessionID = cursor.getString(cursor.getColumnIndex("sessionId")); String msgContent = cursor.getString(cursor.getColumnIndex("msgContent")); msg = new MessageModel(); msg.setMessageId(String.valueOf(id)); msg.setSessionId(sessionID); msg.setMsgContent(msgContent); msgList.add(msg); } // 关闭资源 cursor.close(); db.close(); // 返回结果集 return msgList; }
3、调用方法:
MessageDao msgDao = new MessageDao(this); String sql = "insert into message (sessionId, msgContent) values ('111111', '续航来看老卡上的')"; msgDao.insertOrUpdate(sql); String sql1 = "update message set msgContent = '是;浪蝶狂蜂品味oil卡死地方' where id = 1"; msgDao.insertOrUpdate(sql1); String sql2 = "delete from message where id = 2"; msgDao.delete(sql2);
第二种:调用系统函数操作数据库:
1、定义数据库帮助类,参照第一种的方法
2、建立一个Dao
package com.dt.sphone.dao; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.dt.sphone.dao.helper.MessageSQLiteOpenHelper; import com.dt.sphone.model.MessageModel; public class MessageDao { /** * 数据库访问帮助类 */ private MessageSQLiteOpenHelper helper; /** * 构造数据库访问帮助类 * @param context 上下文对象 * <默认构造函数> */ public MessageDao(Context context) { helper = new MessageSQLiteOpenHelper(context); } /** * <使用系统函数执行增加操作> * <功能详细描述> * @param msg 短信对象 * @return * @see [类、类#方法、类#成员] */ public long insertUseSys(MessageModel msg) { // 获取数据库对象 SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("sessionId", "234"); values.put("msgContent", "算了的风景我饿减肥呢阿里斯顿减肥"); long count = db.insert("message", null, values); db.close(); return count; } /** * <使用系统函数执行修改操作> * <功能详细描述> * @return * @see [类、类#方法、类#成员] */ public int updateUseSys(MessageModel msg) { SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("msgContent", "啊老师的看法就我陪U人"); int count = db.update("message", values, "sessionId=?", new String[] {"234"}); db.close(); return count; } /** * <使用系统函数执行删除操作> * <功能详细描述> * @return * @see [类、类#方法、类#成员] */ public int deleteUseSys(MessageModel msg) { SQLiteDatabase db = helper.getWritableDatabase(); int count = db.delete("message", "sessionId=?", new String[] {"234"}); db.close(); return count; } /** * <使用系统函数执行查询操作> * <功能详细描述> * @return * @see [类、类#方法、类#成员] */ public List<MessageModel> getAllMessageUseSys() { // 存储查询结果的列表对象 List<MessageModel> msgList = new ArrayList<MessageModel>(); // 获取数据库对象 SQLiteDatabase db = helper.getReadableDatabase(); // 查询数据库 Cursor cursor = db.query("message", null, null, null, null, null, null); // 遍历查询结果 MessageModel msg = null; while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String sessionID = cursor.getString(cursor.getColumnIndex("sessionId")); String msgContent = cursor.getString(cursor.getColumnIndex("msgContent")); msg = new MessageModel(); msg.setMessageId(String.valueOf(id)); msg.setSessionId(sessionID); msg.setMsgContent(msgContent); msgList.add(msg); } // 关闭资源 cursor.close(); db.close(); // 返回结果集 return msgList; } }
3、调用方法
MessageModel msg = new MessageModel(); long count = msgDao.insertUseSys(msg); long count1 = msgDao.updateUseSys(msg); long count2 = msgDao.deleteUseSys(msg); List<MessageModel> msgList1 = msgDao.getAllMessageUseSys();
注:MessageModel是一个实体类,包含三个字段id(int,自增长的),sessionId(String),msgContent(String)
相关推荐
姚强 2020-02-14
whyname 2019-12-23
zbcaicai 2020-05-26
wintershii 2020-01-18
sunshunli 2012-07-11
Arthur 2011-01-18
bigdatazx 2010-11-05
luoj 2011-08-23
happinessaflower 2011-08-12
fuzhangpeng 2011-08-09
LiLiLiLaLa 2011-06-11
sunshunli 2013-12-31
longhushi 2013-12-29
airfling 2011-10-27
bigdatazx 2011-09-22
tsolin 2015-03-18
一夜长风 2015-03-18
sunsi00 2012-01-31