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)