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使用ant编译找不到apkbuilder.jar的错误的解决方法
  4. Android studio 连接数据库小经历遇到的问题以及解决方法(java.sq
  5. android 永远锁屏解决方法
  6. android软键盘把页面挤上去的解决方法

随机推荐

  1. Androidの矢量图形之VectorDrawable研究
  2. Android(安卓)MVC Demo范例参考,基本上很
  3. ActionBar的Splite模式
  4. Android(安卓)P(api 28) 监听Activity生
  5. apk文件反编译
  6. GPS在Android的使用经验
  7. Android中的分辨率小结
  8. xxx is not translated in yyy, zzz 的解
  9. Android通过路径获取URI(全版本)
  10. 【android】存储数组数据到SharedPrefere