您的位置:首页 > 数据库

SQLite数据库的使用

2015-12-30 11:24 232 查看
1.数据模型model

public class Tb_inaccount// 收入信息实体类
{
private int _id;// 存储收入编号
private double money;// 存储收入金额
private String time;// 存储收入时间
private String type;// 存储收入类别
private String handler;// 存储收入付款方
private String mark;// 存储收入备注

public Tb_inaccount()// 默认构造函数
{
super();
}

// 定义有参构造函数,用来初始化收入信息实体类中的各个字段
public Tb_inaccount(int id, double money, String time, String type,
String handler, String mark) {
super();
this._id = id;// 为收入编号赋值
this.money = money;// 为收入金额赋值
this.time = time;// 为收入时间赋值
this.type = type;// 为收入类别赋值
this.handler = handler;// 为收入付款方赋值
this.mark = mark;// 为收入备注赋值
}

public int getid()// 设置收入编号的可读属性
{
return _id;
}

public void setid(int id)// 设置收入编号的可写属性
{
this._id = id;
}

public double getMoney()// 设置收入金额的可读属性
{
return money;
}

public void setMoney(double money)// 设置收入金额的可写属性
{
this.money = money;
}

public String getTime()// 设置收入时间的可读属性
{
return time;
}

public void setTime(String time)// 设置收入时间的可写属性
{
this.time = time;
}

public String getType()// 设置收入类别的可读属性
{
return type;
}

public void setType(String type)// 设置收入类别的可写属性
{
this.type = type;
}

public String getHandler()// 设置收入付款方的可读属性
{
return handler;
}

public void setHandler(String handler)// 设置收入付款方的可写属性
{
this.handler = handler;
}

public String getMark()// 设置收入备注的可读属性
{
return mark;
}

public void setMark(String mark)// 设置收入备注的可写属性
{
this.mark = mark;
}
}2.数据库操作类

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBOpenHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;// 定义数据库版本号
private static final String DBNAME = "account.db";// 定义数据库名

public DBOpenHelper(Context context){// 定义构造函数

super(context, DBNAME, null, VERSION);// 重写基类的构造函数
}

@Override
public void onCreate(SQLiteDatabase db){// 创建数据库

db.execSQL("create table tb_outaccount (_id integer primary key,money decimal,time varchar(10),"
+ "type varchar(10),address varchar(100),mark varchar(200))");// 创建支出信息表
db.execSQL("create table tb_inaccount (_id integer primary key,money decimal,time varchar(10),"
+ "type varchar(10),handler varchar(100),mark varchar(200))");// 创建收入信息表
db.execSQL("create table tb_pwd (password varchar(20))");// 创建密码表
db.execSQL("create table tb_flag (_id integer primary key,flag varchar(200))");// 创建便签信息表
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)// 覆写基类的onUpgrade方法,以便数据库版本更新
{
}
}3.数据访问对象DAO

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.xiaoke.accountsoft.model.*;

public class InaccountDAO {
private DBOpenHelper helper;// 创建DBOpenHelper对象
private SQLiteDatabase db;// 创建SQLiteDatabase对象

public InaccountDAO(Context context)// 定义构造函数
{
helper = new DBOpenHelper(context);// 初始化DBOpenHelper对象
}

/**
* 添加收入信息
*
* @param tb_inaccount
*/
public void add(Tb_inaccount tb_inaccount) {
db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
// 执行添加收入信息操作
db.execSQL(
"insert into tb_inaccount (_id,money,time,type,handler,mark) values (?,?,?,?,?,?)",
new Object[] { tb_inaccount.getid(), tb_inaccount.getMoney(),
tb_inaccount.getTime(), tb_inaccount.getType(),
tb_inaccount.getHandler(), tb_inaccount.getMark() });
}

/**
* 更新收入信息
*
* @param tb_inaccount
*/
public void update(Tb_inaccount tb_inaccount) {
db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
// 执行修改收入信息操作
db.execSQL(
"update tb_inaccount set money = ?,time = ?,type = ?,handler = ?,mark = ? where _id = ?",
new Object[] { tb_inaccount.getMoney(), tb_inaccount.getTime(),
tb_inaccount.getType(), tb_inaccount.getHandler(),
tb_inaccount.getMark(), tb_inaccount.getid() });
}

/**
* 查找收入信息
*
* @param id
* @return
*/
public Tb_inaccount find(int id) {
db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
Cursor cursor = db
.rawQuery(
"select _id,money,time,type,handler,mark from tb_inaccount where _id = ?",
new String[] { String.valueOf(id) });// 根据编号查找收入信息,并存储到Cursor类中
if (cursor.moveToNext())// 遍历查找到的收入信息
{
// 将遍历到的收入信息存储到Tb_inaccount类中
return new Tb_inaccount(
cursor.getInt(cursor.getColumnIndex("_id")),
cursor.getDouble(cursor.getColumnIndex("money")),
cursor.getString(cursor.getColumnIndex("time")),
cursor.getString(cursor.getColumnIndex("type")),
cursor.getString(cursor.getColumnIndex("handler")),
cursor.getString(cursor.getColumnIndex("mark")));
}
return null;// 如果没有信息,则返回null
}

/**
* 刪除收入信息
*
* @param ids
*/
public void detele(Integer... ids) {
if (ids.length > 0)// 判断是否存在要删除的id
{
StringBuffer sb = new StringBuffer();// 创建StringBuffer对象
for (int i = 0; i < ids.length; i++)// 遍历要删除的id集合
{
sb.append('?').append(',');// 将删除条件添加到StringBuffer对象中
}
sb.deleteCharAt(sb.length() - 1);// 去掉最后一个“,“字符
db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
// 执行删除收入信息操作
db.execSQL("delete from tb_inaccount where _id in (" + sb + ")",
(Object[]) ids);
}
}

/**
* 获取收入信息
*
* @param start
* 起始位置
* @param count
* 每页显示数量
* @return
*/
public List<Tb_inaccount> getScrollData(int start, int count) {
List<Tb_inaccount> tb_inaccount = new ArrayList<Tb_inaccount>();// 创建集合对象
db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
// 获取所有收入信息
Cursor cursor = db.rawQuery("select * from tb_inaccount limit ?,?",
new String[] { String.valueOf(start), String.valueOf(count) });
while (cursor.moveToNext())// 遍历所有的收入信息
{
// 将遍历到的收入信息添加到集合中
tb_inaccount.add(new Tb_inaccount(cursor.getInt(cursor
.getColumnIndex("_id")), cursor.getDouble(cursor
.getColumnIndex("money")), cursor.getString(cursor
.getColumnIndex("time")), cursor.getString(cursor
.getColumnIndex("type")), cursor.getString(cursor
.getColumnIndex("handler")), cursor.getString(cursor
.getColumnIndex("mark"))));
}
return tb_inaccount;// 返回集合
}

/**
* 获取总记录数
*
* @return
*/
public long getCount() {
db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
Cursor cursor = db
.rawQuery("select count(_id) from tb_inaccount", null);// 获取收入信息的记录数
if (cursor.moveToNext())// 判断Cursor中是否有数据
{
return cursor.getLong(0);// 返回总记录数
}
return 0;// 如果没有数据,则返回0
}

/**
* 获取收入最大编号
*
* @return
*/
public int getMaxId() {
db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
Cursor cursor = db.rawQuery("select max(_id) from tb_inaccount", null);// 获取收入信息表中的最大编号
while (cursor.moveToLast()) {// 访问Cursor中的最后一条数据
return cursor.getInt(0);// 获取访问到的数据,即最大编号
}
return 0;// 如果没有数据,则返回0
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: