在android中主要使用SQLite数据库进行对一些数据的存储,以下是相应的CRUD的实例。

[code]
package com.myclover.db.service;

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

/**
*
* @author myclover SQLite3支持
* NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型
* sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型
*/
public class DBOpenHelper extends SQLiteOpenHelper {

private static final String DBNAME = "myclover.db";
private static final int VERSION = 1;

public DBOpenHelper(Context context) {
super(context, DBNAME, null, VERSION);
}

public DBOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);

}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table t_person (id integer primary key autoincrement , name varchar(30) , sex varchar(10) , age integer , amount real)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists t_person");
onCreate(db);
}

}

[/code]

[code]
package com.myclover.db.service;

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

import com.myclover.db.bean.Person;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class DBService {

@SuppressWarnings("unused")
private Context context;
private DBOpenHelper dbHelper;

public DBService(Context context) {
dbHelper = new DBOpenHelper(context);
}

/**
* 功能描述: 保存单个用户信息
*
* @param p
* 用户实例
*/
public void save(Person p) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("insert into t_person (name , sex , age , amount) values (? , ? , ? , ?)",
new Object[] { p.getName(), p.getSex(), p.getAge(),
p.getAmount() });
}

/**
* 功能描述: 更新用户信息
*
* @param p
* 用户实例
*/
public void update(Person p) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("update t_person set name = ? , sex = ? , age = ? , amount = ? where id = ? ",
new Object[] { p.getName(), p.getSex(), p.getAge(),
p.getAmount(), p.getId() });
}

/**
* 功能描述: 通过用户id查询用户信息
*
* @param id
* 用户id
* @return 返回值:如果存在,则返回用户实例,否则返回为null
*/
public Person findById(Integer id) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cs = db.rawQuery("select * from t_person where id = ? ",
new String[] { String.valueOf(id) });
if (cs.moveToNext()) {
Person p = new Person();
p.setId(cs.getInt(cs.getColumnIndex("id")));
p.setName(cs.getString(cs.getColumnIndex("name")));
p.setSex(cs.getString(cs.getColumnIndex("sex")));
p.setAge(cs.getInt(cs.getColumnIndex("age")));
p.setAmount(cs.getFloat(cs.getColumnIndex("amount")));
cs.close();
return p;
}

return null;
}

/**
* 功能描述: 通过用户姓名查询用户信息
*
* @param name
* 用户姓名
* @return 返回值:如果存在,则返回用户实例,否则返回为null
*/
public Person findByName(String name) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cs = db.rawQuery("select * from t_person where name = ? ",
new String[] { name });
if (cs.moveToNext()) {
Person p = new Person();
p.setId(cs.getInt(cs.getColumnIndex("id")));
p.setName(cs.getString(cs.getColumnIndex("name")));
p.setSex(cs.getString(cs.getColumnIndex("sex")));
p.setAge(cs.getInt(cs.getColumnIndex("age")));
p.setAmount(cs.getFloat(cs.getColumnIndex("amount")));

cs.close();
return p;
}

return null;
}

/**
* 功能描述: 通过用户id删除用户信息
*
* @param ids
* 用户id
*/
public void delete(Integer... ids) {
if (ids.length > 0) {
StringBuffer sb = new StringBuffer();
for (@SuppressWarnings("unused")
int id : ids) {
sb.append("?").append(",");
}
sb.deleteCharAt(sb.length() - 1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("delete from t_person where id in (" + sb + ")",(Object[]) ids);
}
}

/**
* 功能描述: 通过分页功能查询用户列表
*
* @param startNum
* 开始索引值
* @param perNum
* 每页显示的数目
* @return 返回值:返回用户列表信息
*/
public List getPerosns(int startNum, int perNum) {
List lists = new ArrayList();
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cs = db
.rawQuery("select * from t_person limit ? , ? ", new String[] {
String.valueOf(startNum), String.valueOf(perNum) });
while (cs.moveToNext()) {
Person p = new Person();
p.setId(cs.getInt(cs.getColumnIndex("id")));
p.setName(cs.getString(cs.getColumnIndex("name")));
p.setSex(cs.getString(cs.getColumnIndex("sex")));
p.setAge(cs.getInt(cs.getColumnIndex("age")));
p.setAmount(cs.getFloat(cs.getColumnIndex("amount")));
lists.add(p);
}
cs.close();
return lists;
}

/**
* 功能描述: 统计数据库中数据的数目
*
* @return 返回值:返回数据的条数
*/
public long getTotalCounts() {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cs = db.rawQuery("select count(*) from t_person ", null);
if (cs.moveToNext()) {
return cs.getLong(0);
}
return 0;
}

/**
* 功能描述: 使用事务进行控制两条信息的更新操作,从源用户转出指定金额到目的用户
*
* @param id
* 源用户id
* @param amount
* 转换金额
* @param tid
* 目的用户id
*/
public void transAmount(int id, float amount, int tid) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 开启事务
db.beginTransaction();
try {
if (findById(id) != null && findById(tid) != null) {
db.execSQL("update t_person set amount = amount - ? where id = ? ", new Object[] { amount, id });
db.execSQL("update t_person set amount = amount + ? where id = ? ", new Object[] { amount, tid });
// 设置事务的成功标志
db.setTransactionSuccessful();
}
} catch (SQLException e) {
} finally {
// 结束事务,如果设置事务是否成功标志为成功时,则此时先提交事务再结束,否则就是回滚事务并结束
db.endTransaction();
}
}

/**
* 功能描述:
* 关闭数据库资源
*/
public void closeDB(){
dbHelper.close();
}

}

[/code]

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Fedora镜像
  2. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  3. android 电子签名 手写签名 功能实现
  4. Android(安卓)studio 自带的 LoginActivity 连接MySQL 实现登录
  5. android 实现音频分享功能
  6. Delphi xe7 up1 调用android振动功能
  7. Android之——实现应用卸载功能
  8. Android发送短信功能代码
  9. Android之Button练习

随机推荐

  1. Android实现手机拍照功能
  2. Android学习【7】manifest文件讲解
  3. android 随手记 广播通知栏 二
  4. Android实现淘宝商品列表切换效果
  5. Android:java.lang.IllegalStateExceptio
  6. android的Activity管理
  7. 解决:Failed to fectch URl https://dl-ss
  8. 200美元英特尔Android笔记本即将到来
  9. Android TextView加中划线,下划线
  10. ICS4.0.3 将声音设置中的震动和响铃默认