1、SQLiteOpenHelper

package com.pas.sqllitehelper;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class PersonSQLiteOpenHelper extends SQLiteOpenHelper{/** * 数据库构造方法 用来定义数据库的名称 数据库查询的结果集 数据库的版本 * @param context * @param name * @param factory * @param version */public PersonSQLiteOpenHelper(Context context){super(context, "person.db", null, 2);}/** * 数据库首次创建的执行的方法 * @param db 被创建的数据库 */@Overridepublic void onCreate(SQLiteDatabase db){db.execSQL("create table persons (id integer primary key autoincrement," +"name varchar(20),number varchar(20))");}/** * 当数据库版本号发生变化时候调用 */@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){Log.i("数据库更新", "数据库更新……");db.execSQL("alter table persons add account varchar(20)");}}

2、Dao类

package com.pas.db.dao;import java.util.ArrayList;import java.util.List;import com.pas.domain.Person;import com.pas.sqllitehelper.PersonSQLiteOpenHelper;import android.R.bool;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class PersonDao{private PersonSQLiteOpenHelper helper;public PersonDao(Context context){helper = new PersonSQLiteOpenHelper(context);}/** *  传统方式-添加(不推荐) *  * @param name * @param number */public void add(String name, String number){SQLiteDatabase db = helper.getWritableDatabase();String sql = "insert into persons (name,number) values (?,?)";Object[] para = new Object[]{ name, number };db.execSQL(sql, para);db.close();}/** * 系统API添加 *  * @param name * @param number */public boolean add_api(String name, String number, long account){SQLiteDatabase db = helper.getWritableDatabase();ContentValues values = new ContentValues();values.put("name", name);values.put("number", number);values.put("account", account);/* * 参数为 表名 null填充列名 插入值的map集合 *  关于第二个参数: *  当values参数为空或者里面没有内容的时候, *  我们insert是会失败的(底层数据库不允许插入一个空行), *  为了防止这种情况,我们要在这里指定一个 列名, *  到时候如果发现将要插入的行为空行时, *  就会将你指定的这个列名的值设为null,然后再向数据库中插入 */long flag = db.insert("persons", null, values);db.close();if (flag == -1)return false;return true;}/** * 查询 *  * @param name */public List<Person> find(String name){SQLiteDatabase db = helper.getReadableDatabase();// String sql = "select * from persons where name=?";// String[] para = new String[]// { name };// Cursor res = db.rawQuery(sql, para);Cursor res = db.query("persons", null, "name=?", new String[]{ name }, null, null, null);List<Person> persons = new ArrayList<Person>();while (res.moveToNext()){Person person = new Person();person.setId(res.getString(0));person.setName(res.getString(1));person.setNumber(res.getString(2));person.setAccount(res.getString(3));persons.add(person);}res.close();db.close();return persons;}/** * 更新 *  * @param name * @param number * @return */public int update(String name, String number, String account){SQLiteDatabase db = helper.getReadableDatabase();ContentValues values = new ContentValues();values.put("number", number);values.put("account", account);int rows = db.update("persons", values, "name=?", new String[]{ name });db.close();return rows;}/** * 删除 *  * @param name * @return */public int del(String name){SQLiteDatabase db = helper.getReadableDatabase();int rows = db.delete("persons", "name=?", new String[]{ name });db.close();return rows;}/* * 转账 测试事务 */public void transfer(String sourceName, String targetName, double value){SQLiteDatabase db = helper.getWritableDatabase();//开启事务db.beginTransaction();try{db.execSQL("update persons set account=account-? where name=?", new Object[]{ value, sourceName });db.execSQL("update persons set account=account+? where name=?", new Object[]{ value, targetName});//标记数据库事务执行成功db.setTransactionSuccessful();} finally{db.endTransaction();}db.close();}}


更多相关文章

  1. Android(安卓)JNI 之 .h 头文件
  2. 淘宝客商品查询接口
  3. android 微型服务器
  4. 模拟器上“插入”SD卡
  5. android assets文件夹下的数据库应用
  6. ubuntu android 命令环境下操作sqlite
  7. android SQLite常用数据类型
  8. Android.mk 参数函数查询
  9. Android之位置的服务

随机推荐

  1. android bitmap保存为文件及读取
  2. 使用Adb shell command直接送key event給
  3. ubuntu12.04 编译 ics android 4.0.4 日
  4. 【Android UI】自定义圆形Loading动画
  5. Android 判断是否是手机或平板。
  6. android 调用mail程序发送邮件
  7. Android Studio集成Library时报错,终极解
  8. 启动系统Camera拍照(Android)
  9. Android小程序之个人信息管理系统
  10. 说说在 Android 的 RecyclerView 中如何