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 getAllMessageForParams(String sql, Object[] params)    {        // 存储查询结果的列表对象        List msgList = new ArrayList();                // 获取数据库对象        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 getAllMessageUseSys()    {        // 存储查询结果的列表对象        List msgList = new ArrayList();                // 获取数据库对象        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 msgList1 = msgDao.getAllMessageUseSys();

 

注:MessageModel是一个实体类,包含三个字段id(int,自增长的),sessionId(String),msgContent(String) 

 

更多相关文章

  1. android:屏幕自适应
  2. 【Android】文件读写操作(含SDCard的读写)
  3. android Uri获取真实路径转换成File的方法
  4. Android(安卓)Studio——ListView的高级使用
  5. 使用Android提供的模拟任意地理位置,报java.lang.IllegalArgument
  6. 《宅男的android开发指南》(翻译)--2
  7. Android学习笔记(九) Android文件读写操作
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. CSS:盒模型-复习
  2. apollo 6.0 【开发版】从安装到启动,保姆
  3. 使用css制作太极图
  4. Mediapipe框架在Android上的使用
  5. Android面试必备——AsyncTask源码解析
  6. android:ToolBar详解
  7. android上实现语音识别,基于google的语音
  8. DRM in Android
  9. Android(安卓)dpi,dp,dip,px的关系
  10. Android(安卓)UI开发第三十九篇——Tab界