SQLite常见操作(增删改查)
2013-03-26 00:26
525 查看
package com.itheima.mysqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { /** * 用来打开数据库的一个工具,其中有创建和升级的方法 * @param context * @param name * @param factory * @param version */ public DBOpenHelper(Context context) { super(context, "itheima", null, 3); /* * 参数1:上下文环境的对象,用来确定数据库存储位置 * 参数2:数据库文件的名字 * 参数3:用来创建结果集的工厂,null为使用默认的工厂 * 参数4:数据库的版本,从1开始 */ } @Override public void onCreate(SQLiteDatabase db) { System.out.println("onCreate"); db.execSQL("CREATE TABLE person(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ System.out.println("onUpgrade"); db.execSQL("ALTER TABLE person ADD balance INTEGER"); } }
package com.itheima.mysqlite; public class Person { private Integer id; private String name; private Integer balance; public Person() { super(); } public Person(String name, Integer balance) { super(); this.name = name; this.balance = balance; } public Person(Integer id, String name, Integer balance) { super(); this.id = id; this.name = name; this.balance = balance; } 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; } public Integer getBalance() { return balance; } public void setBalance(Integer balance) { this.balance = balance; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", balance=" + balance + "]"; } }
//SQL语句操作方法 package com.itheima.mysqlite; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; public class ClassicPersonDao { private Context context; public ClassicPersonDao(Context context) { this.context = context; } public void insert(Person p){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL("INSERT INTO person(name, balance) VALUES(?, ?)", new Object[] { p.getName(), p.getBalance() }); db.close(); } public void delete(int id){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL("DELETE FROM person WHERE id=?", new Object[]{id}); db.close(); } public void update(Person p){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getWritableDatabase(); db.execSQL("UPDATE person SET name=?, balance=? WHERE id=?", new Object[] {p.getName(), p.getBalance(), p.getId()}); db.close(); } public Person query(int id){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase();//如果数据库不可写,getReadableDatabase()方法可以执行 Cursor c = db.rawQuery("SELECT * FROM person WHERE id=? ", new String[]{ id + ""}); Person p = null; if(c.moveToNext()){ //将结果集向后移动,并且返回是否成功 String name = c.getString(c.getColumnIndex("name")); int balance = c.getInt(c.getColumnIndex("balance")); p = new Person(name, balance); } return p; } public List<Person> queryAll(){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase();//如果数据库不可写,getReadableDatabase()方法可以执行 Cursor c = db.rawQuery("SELECT id, name, balance FROM person",null); List<Person> persons = new ArrayList<Person>(); while (c.moveToNext()){ persons.add(new Person(c.getInt(0), c.getString(1), c.getInt(2))); } c.close(); db.close(); return persons; } /** * 分页查询 指定页数和每页容量 * @param pageNum 页码 * @param capacity 每页大小 * @return 指定页上的Person 集合 */ public List<Person> queryPage(int pageNum, int capacity){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase(); String offset = (pageNum - 1) * capacity + ""; String limit = capacity + ""; Cursor c = db.rawQuery("SELECT id, name, balance FROM person LIMIT ?,?",new String[]{offset , limit}); List<Person> persons = new ArrayList<Person>(); while (c.moveToNext()){ persons.add(new Person(c.getInt(0), c.getString(1), c.getInt(2))); } c.close(); db.close(); return persons; } /** * 查询数据库中有多少条记录 * @return */ public int queryCount(){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase();//如果数据库不可写,getReadableDatabase()方法可以执行 Cursor c = db.rawQuery("SELECT COUNT(*) FROM person",null); c.moveToNext(); int count = c.getInt(0); c.close(); db.close(); return count; } //事务操作 public void remit(int from, int to, int amount){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase(); try { db.beginTransaction(); //开启事物 db.execSQL("UPDATE person SET balance=balance-? WHERE id=?", new Object[]{amount, from}); db.execSQL("UPDATE person SET balance=balance+? WHERE id=?", new Object[]{amount, to}); db.setTransactionSuccessful(); //设置事物成功,设置成功之前的操作在事物结束的时候会被提交 } finally { db.endTransaction(); //结束事物,如果不结束其会超时自动结束 db.close(); } } }
//另一种操作方法 package com.itheima.mysqlite; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class PersonDao { private Context context; public PersonDao(Context context) { this.context = context; } public long insert(Person p){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); //创建一个Map集合,用来装载要插入的数据 values.put("name", p.getName()); values.put("balance", p.getBalance()); long id = db.insert("person", "name", values);//第2个参数随便写一个列名就可以,在插入空记录时用来拼装SQL语句 db.close(); return id; } public void delete(int id){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getWritableDatabase(); int count = db.delete("person", "id=?", new String[]{ id + ""}); //删除,并且返回影响的记录数 db.close(); } public int update(Person p){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", p.getName()); values.put("balance", p.getBalance()); int count = db.update("person", values, "id=?", new String[]{p.getId()+""}); db.close(); return count; } public Person query(int id){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase();//如果数据库不可写,getReadableDatabase()方法可以执行 Cursor c = db.query("person", new String[]{"name", "balance"}, "id=?", new String[]{id+""}, null, null, null); Person p = null; if(c.moveToNext()){ //将结果集向后移动,并且返回是否成功 String name = c.getString(c.getColumnIndex("name")); int balance = c.getInt(c.getColumnIndex("balance")); p = new Person(id, name, balance); } return p; } public List<Person> queryAll(){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase();//如果数据库不可写,getReadableDatabase()方法可以执行 Cursor c = db.query("person", null, null, null, null, null, "balance DESC"); //递减查询所有 List<Person> persons = new ArrayList<Person>(); while (c.moveToNext()){ persons.add(new Person(c.getInt(0), c.getString(1), c.getInt(2))); } c.close(); db.close(); return persons; } /** * 分页查询 指定页数和每页容量 * @param pageNum 页码 * @param capacity 每页大小 * @return 指定页上的Person 集合 */ public List<Person> queryPage(int pageNum, int capacity){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase(); String offset = (pageNum - 1) * capacity + ""; String limit = capacity + ""; Cursor c = db.query("person", null, null, null, null, null, null, offset + "," + limit); List<Person> persons = new ArrayList<Person>(); while (c.moveToNext()){ persons.add(new Person(c.getInt(0), c.getString(1), c.getInt(2))); } c.close(); db.close(); return persons; } /** * 查询数据库中有多少条记录 * @return */ public int queryCount(){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase();//如果数据库不可写,getReadableDatabase()方法可以执行 Cursor c = db.query("person", new String[]{"COUNT(*)"}, null, null, null, null, null); c.moveToNext(); int count = c.getInt(0); c.close(); db.close(); return count; } //事务操作 public void remit(int from, int to, int amount){ DBOpenHelper helper = new DBOpenHelper(context); SQLiteDatabase db = helper.getReadableDatabase(); try { db.beginTransaction(); //开启事物 db.execSQL("UPDATE person SET balance=balance-? WHERE id=?", new Object[]{amount, from}); db.execSQL("UPDATE person SET balance=balance+? WHERE id=?", new Object[]{amount, to}); db.setTransactionSuccessful(); //设置事物成功,设置成功之前的操作在事物结束的时候会被提交 } finally { db.endTransaction(); //结束事物,如果不结束其会超时自动结束 db.close(); } } }
package com.itheima.mysqlite; import java.util.List; import java.util.Random; import android.test.AndroidTestCase; public class DBTest extends AndroidTestCase { public void testCreateDatabase(){ DBOpenHelper helper = new DBOpenHelper(getContext()); helper.getWritableDatabase(); // 获取数据库连接 /* * 数据库不存在:创建数据库,执行onCreate()方法 * 数据库存在,版本没变:不执行任何方法 * 数据库存在,版本提升:执行onUpgrade()方法 */ } public void testInsert(){ PersonDao dao = new PersonDao(getContext()); dao.insert(new Person("insert", 9999)); } public void testUpdate(){ PersonDao dao = new PersonDao(getContext()); System.out.println(dao.update(new Person(209,"李四",321))); } public void testDelete(){ PersonDao dao = new PersonDao(getContext()); dao.delete(208); } public void testQuery(){ PersonDao dao = new PersonDao(getContext()); System.out.println(dao.query(234)); System.out.println(dao.query(2)); System.out.println(dao.query(302)); } public void testQueryAll(){ PersonDao dao = new PersonDao(getContext()); List<Person> persons = dao.queryAll(); for(Person p: persons){ System.out.println(p); } } public void testQueryPage(){ PersonDao dao = new PersonDao(getContext()); List<Person> persons = dao.queryPage(2,20); for(Person p: persons){ System.out.println(p); } } public void testQueryCount(){ PersonDao dao = new PersonDao(getContext()); System.out.println(dao.queryCount()); } public void testRemit(){ PersonDao dao = new PersonDao(getContext()); dao.remit(209,208,100); } }
相关文章推荐
- sqlite的一些常见操作(增删改查)语句
- iOS 数据库详解 sqlite实现增删改查操作
- android sqlite 数据库创建及增删改查的操作实现
- Android开发(10)使用SQLiteDatabase操作SQLite数据库实现增删改查(源码)
- 详解Android中一些SQLite的增删改查操作
- SQLite 基本操作(增删改查)
- SQLite的增删改查操作
- Android SQLite数据库增删改查操作
- FinalDb操作sqlite的数据库(增删改查)
- PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
- Android开发(10)使用SQLiteDatabase操作SQLite数据库实现增删改查(源码)
- MYSQL增删改查和其他常见操作
- [置顶] Oracle数据库常见的增删改查操作语句大全
- PHP实现对xml的增删改查操作案例分析
- java jdbc连接mysql数据库实现增删改查操作
- gridview不分层的增删改查操作
- Android操作SQLite的几个常见方法
- node.js操作mysql(增删改查)
- Hbase常用操作(增删改查)
- 十一、SQLite数据库增删改查操作案例