android操作自带的SQlite数据库
来源:互联网 发布:知乎 汉语 不及物动词 编辑:程序博客网 时间:2024/05/20 10:14
创建DBOpenHelper类
DBOpenHelper.java(一定要继承SQLiteOpenHelper )
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context) { /* * 数据库文件默认创建在 <包>/databases/ * name要生成数据库名称 * factory游标工厂用null使用系统默认的游标工厂 * version数据库文件的版本号,不能为0 * */ super(context, "mydb.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { // TODO 数据库第一次被创建的时候调用 db.execSQL("CREATE TABLE person (id INTEGER PRIMARY KEY autoincrement, name VARCHAR(20))");//创建person表 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO 数据库文件的版本号发生变更的时候调用 db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL");//往表中增加一列 }}
创建数据库
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext());dbOpenHelper.getWritableDatabase();//第一次调用时会创建数据库
保存
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext()); SQLiteDatabase db = dbOpenHelper.getWritableDatabase();//对同一个dbOpenHelper实例有缓存 Person person = new Person(); person.setName("user"); //方法一 List<Object> para = new ArrayList<Object>(); para.add(person.getName()); db.execSQL("insert into person(name) values(?)", para.toArray()); //方法二 ContentValues contentValues = new ContentValues(); contentValues.put("name", person.getName()); /*第一个参数:表名 * 第二个参数:null空值字段,当contentValues为null时用到,可以传null或表中字段("id") * 第三个参数:要保存的值 * */ db.insert("person", null, contentValues); db.close();
删除
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext()); SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); //方法一 List<Object> para = new ArrayList<Object>(); para.add(1); db.execSQL("delete from person where id=?", para.toArray()); //方法二 db.delete("person", "id=?", new String[]{"1"});//表名,条件,占位符的值 db.close();
事物
修改
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext()); Person person = new Person(); person.setId(5); person.setName("yyyyy"); SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); //方法一 List<Object> para = new ArrayList<Object>(); para.add(person.getName()); para.add(person.getId()); db.execSQL("update person set name=? where id=?", para.toArray()); //方法二 ContentValues values = new ContentValues(); values.put("name", person.getName()); db.update("person", values, "id=?", new String[]{person.getId().toString()});//表名,更新的值,条件,条件中占位符的值 db.close();
查找
根据id查找
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext()); Person person = null; SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Long id=1l; //方法一 Cursor cursor = db.rawQuery("select * from person where id=?", new String[]{id+""}); //方法二 /* * 第一个参数:表名 * 第二个参数:要查找的字段名(如:new String[]{"id","name"}),如果传null将查全部 * 第三个参数:条件 * 第四个参数:条件中的值 * 第五个参数:查询语句中的groupBy没有传null * 第六个参数:查询语句中的having没有传null * 第七个参数:查询语句中的orderBy没有传null * */ Cursor cursor = db.query("person", null, "id=?", new String[]{id+""}, null, null, null); if(cursor.moveToFirst()){ String name = cursor.getString(cursor.getColumnIndex("name")); person = new Person(id,name); } db.close(); Log.i(TAG, person.toString());
分页查找
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext()); List<Person> list = new ArrayList<Person>(); Person person = null; int offser = 0; int maxResult = 5; SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); //方法一 Cursor cursor = db.rawQuery("select * from person order by id asc limit ?,?", new String[]{offser+"",maxResult+""}); //方法二 /* * 第一个参数:表名 * 第二个参数:要查找的字段名(如:new String[]{"id","name"}),如果传null将查全部 * 第三个参数:条件 * 第四个参数:条件中的值 * 第五个参数:查询语句中的groupBy没有传null * 第六个参数:查询语句中的having没有传null * 第七个参数:查询语句中的orderBy没有传null * 第八个参数:limit * */ cursor = db.query("person", null, null, null, null, null, "id asc", offser+","+maxResult); while(cursor.moveToNext()){ person = new Person(cursor.getInt(cursor.getColumnIndex("id")), cursor.getString(cursor.getColumnIndex("name"))); list.add(person); } db.close(); for(Person p : list){ Log.i(TAG, p.toString()); }
获取数据记录数
DBOpenHelper dbOpenHelper = new DBOpenHelper(getContext()); SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); //方法一 Cursor cursor = db.rawQuery("select COUNT(id) from person",new String[]{}); //方法二 cursor = db.query("person", new String[]{"COUNT(id)"}, null, null, null, null, null); if(cursor.moveToFirst()){ return cursor.getLong(0); }
事务
PersonService personService = new PersonService(getContext()); Person person = new Person(); person.setId(5); person.setName("yyyyy"); SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); List<Object> para = new ArrayList<Object>(); para.add(person.getName()); para.add(person.getId()); db.beginTransaction();//开启事务 try { db.execSQL("update person set name=? where id=?", para.toArray()); db.setTransactionSuccessful();//设置事务的标志为True } finally{ /* * 结束事务,有两种情况:commit,rollback * 事务的提交或回滚是由事务的标志决定的,如果事务的标志为True事务就提交,否则回滚 * 默认情况下事务的标志为false * */ db.endTransaction(); } db.close();
附件
Person.java
public class Person { private Integer id; private String name; public Person() { super(); } public Person(Integer id, String name) { super(); this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + "]"; }}
0 0
- android操作自带的SQlite数据库
- Android中自带的SQLite数据库
- 使用SQLite中自带的API操作SQLite数据库
- Android自带 SQLite数据库
- 关于android系统自带数据库SQLite操作的重要易犯错误
- Android中Sqlite的操作(SQLiteDataBase自带方法)
- 在android项目里使用自带的SQLite数据库
- Android自带SQLite数据库查询语句query的用法
- Android自带数据库-SQLite探究
- android数据库 Android自带数据库SQLite 操作 一步一步 图示教程
- android自带的关系型数据库SQLite在命令行查看的常用命令
- android Sqlite数据库的操作
- android sqlite数据库的操作
- android的sqlite数据库操作
- QT学习之路————使用QT自带的QSqlDatabase类简单操作sqlite数据库
- SQLite安卓自带数据库
- Android 自带的小型关系数据库
- android自带的媒体数据库应用
- JDK的动态代理实现原理理解
- 第8章6节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动Monkey
- 查询SQL强化练习
- 第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结
- 读取文件中的字符个数,包括空格等
- android操作自带的SQlite数据库
- 探索Popupwindow-对话框风格的窗口(
- 【Ruby】语言基础
- 测试博客
- 【Java】Java、JavaScript、JSP、JScript,傻傻分不清楚
- HDU 5146 Sequence
- 【Ruby】语法记录一
- mysql下载安装配置
- 10009---AngularJS Http