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)

更多相关文章

  1. android 笔记 --- Android(安卓)Bitmap 建立或取得的方法
  2. Android自带Music播放器更新播放时间和进度条的方法
  3. Android类加载器ClassLoader
  4. Android硬件访问服务-Service
  5. 详解 Android(安卓)的 Activity 组件
  6. Android事件分发机制源码分析
  7. Android(安卓)中使用自定义字体的方法
  8. android使用ant编译找不到apkbuilder.jar的错误的解决方法
  9. Android中更新UI的线程:Thread 、Handler、Looper、TimerTask等

随机推荐

  1. android使用SharedPreferences保存值,值变
  2. android平台上20个自由移动的小球
  3. My Android Bugs
  4. android 多点触摸 放大 缩小 图片
  5. android工具详解
  6. android生命周期研究
  7. Android 自动化测试工具Robotium 之Solo
  8. Android P Android.dp添加逻辑判断
  9. Android的帧布局
  10. android监听当前应用