Android数据库SQLite基础
16lz
2021-01-26
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();}}
更多相关文章
- Android(安卓)JNI 之 .h 头文件
- 淘宝客商品查询接口
- android 微型服务器
- 模拟器上“插入”SD卡
- android assets文件夹下的数据库应用
- ubuntu android 命令环境下操作sqlite
- android SQLite常用数据类型
- Android.mk 参数函数查询
- Android之位置的服务