`
mimang2007110
  • 浏览: 232403 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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) 

 

分享到:
评论

相关推荐

    android访问远程数据库两种方式.pdf

    android访问远程数据库两种方式.pdf

    android 搜索记录两种方式(包括自动匹配)

    android 搜索记录两种方式(包括自动匹配),shareprefrence与数据库两种方式

    Android中数据库常见操作实例分析

    android中数据库操作是非常常见了,我们会经常用到,操作的方法也有很多种形式,这里我就把最常见的两种形式记录下来了,以备以后用到方便查看。我就不写注释和解释了,因为android数据库的操作和其它数据库操作本质...

    android sqlite的两种管理方法demmo

    android sqlite 学习,使用java的语法规则和 android自带的语法规则进行数据库的增删查改

    Android+webservice操作数据库,实现xml和Json两种模式接收

    通过webservice为中介对数据库实现了增删查功能,例子中提供了两种模式数据处理,分别是webservice返回xml或者Json的处理。

    android使用mysql的方法总结

    android可以使用mysql数据库,android连接数据库的方式有两种。 第一种是通过连接服务器,再由服务器读取数据库来实现数据的增删改查,这也是我们常用的方式。 第二种方式是android直接连接数据库,这种方式非常耗...

    Unity3D教程:两种方法连接MySql数据库2

    Unity3D教程:两种方法连接MySql数据库 Posted on 2013年06月27日 by U3d / Unity3D 基础教程/被围观 14 次 1、

    Android代码-一个方便实用的OrmLite数据库框架,支持一键集成。

    支持内部存储和外部存储两种数据库。 支持自定义数据库存储位置。 支持自定义数据库打开、升级以及降级的接口。 支持事务操作、回滚等。 提供了常用的数据库操作API。 1、演示(请star支持) Demo下载 ...

    Android数据库安全解决方案,使用SQLCipher进行加解密

    在Android中,我们既可以使用原生的SQL语句来对数据进行操作,也可以使用AndroidAPI提供的CRUD方法来对数据库进行操作,两种方式各有特点,选择使用哪一种就全凭个人喜好了。不过,使用SQLite来存储数据却存在着一个...

    基于HttpClient的Android远程数据库访问

    摘要:虽然Android有SQLite的支持,但...而访问远程数据库的方法多种多样,主要分为直接和间接两种。直接访问采用JDBC连接技术,但其安全性较低,间接方法主要通过客户端向服务器发送请求,进而采用数据传输的方式进行

    Android利用LitePal操作数据库存取图片

    Android数据库中存取图片通常使用两种方式,一种是保存图片所在路径,二是将图片以二进制的形式存储(sqlite3支持BLOB数据类型)。对于两种方法的使用,好像第二种方法不如第一种方法更受程序员欢迎,他们认为,在很...

    Android 应用数据库升级方法.docx

    应用的更新有两种情况,一是系统应用随着系统OTA更新,二是用户从市场上单独更新app。无论哪种情况,若是前后版本的应用的数据库结构发生了变化,应用需要自行处理前后结构的转换工作。否则,更新后的应用访问数据库...

    Android和Access版本的黄历数据库

    两种版本(Android和Access)的黄历数据库,要以在Android下直接使用,并提供Access版本

    Android中的SQLite数据库简介

    SQLite是Android系统采用的一种开源的轻量级的关系型的数据库,Android中允许每个应用程序都拥有自己独立的数据库,每个应用程序的数据库的位置一般在/data/data/&lt;package&gt;/databases中。为了方便开发人员的使用,...

    android拍照并上传到本地(也可用来写入数据库)

    这个程序是用来拍照上传并且保存到本地的例子,已经根据我的需求完善了,图片也有压缩和未压缩两种保存方式,如果做的过程有什么不明白的请联系我,内有联系方式!

    Android高手进阶教程与Android基础教程

    Android基础教程之----Android中两种设置全屏的方法!!.doc Android基础教程之----Android状态栏提醒(Notification,NotificationManager)的使用.doc Android基础教程之----SMS简单发送短信程序(两个模拟器之间的通信)...

    通信与网络中的基于HttpClient的Android远程数据库访问

    摘要:虽然Android有SQLite的支持,但...而访问远程数据库的方法多种多样,主要分为直接和间接两种。直接访问采用JDBC连接技术,但其安全性较低,间接方法主要通过客户端向服务器发送请求,进而采用数据传输的方式进行

    android数据存储

    在Android中,提供了三种数据存储的途径,和两种存储方式。 三种途径: l 系统配置(Shared Preferences): 这类应用主要是系统的配置信息的保存,比如我给程序界面设置了颜色,我想在下一次启动时还是能够保留...

Global site tag (gtag.js) - Google Analytics