用adb命令进入sqlite数据库 Adb shell -> cd data -> cd data ->cd com.itheima.db ->databases-> sqlite3 persons.db (persons.db为数据库名) Select * from person; 操作sqlite数据库(需要借助SQLiteOpenHelper) public class MyDBOpenHelper extends SQLiteOpenHelper {
/** * * @param context 应用程序上下文 * @param name 数据库的名字 * @param factory 查询数据库的游标工厂 一般情况下 用sdk默认的 * @param version 数据库的版本 版本号必须不小1 * */ public MyDBOpenHelper(Context context) { super(context,"itheima.db",null,5); }
// 在mydbOpenHelper 在数据库第一次被创建的时候 会执行onCreate(); @Override public void onCreate(SQLiteDatabase db) { System.out.println("我被调用了 oncreate"); db.execSQL("CREATE TABLE person (personid integer primary key autoincrement,name varchar(20))"); }
@Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) { System.out.println("on update "); db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL "); } }
通过DBOpenHelper对数据库进行增删改查
public class PersonDao { private static final String TAG = "PersonDao"; private MyDBOpenHelper dbOpenHelper;
// 在personDao被new出来的时候 就完成初始化
public PersonDao(Context context) { dbOpenHelper = new MyDBOpenHelper(context); // dbOpenHelper.getReadableDatabase() // dbOpenHelper.getWritableDatabase() }
// 增删改查
/** * 往数据库添加一条数据 */ public void add(String name,String phone) { boolean result = find(name); if (result) return;
SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); if (db.isOpen()) { db.execSQL("insert into person (name,phone) values (?,?)", new Object[] { name,phone }); // 关闭数据库 释放数据库的链接 db.close(); } }
/** * 查找数据库的操作 */ public boolean find(String name) { boolean result = false; SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); if (db.isOpen()) { Cursor cursor = db.rawQuery("select * from person where name=?", new String[] { name }); if (cursor.moveToFirst()) { int index = cursor.getColumnIndex("phone"); // 得到phone在表中是第几列 String phone = cursor.getString(index); Log.i(TAG,"phone =" + phone); result = true;
} // 记得关闭掉 cursor cursor.close(); result = false; // 释放数据库的链接 db.close(); } return result; }
/** * 删除一条记录 * * @param name */ public void delete(String name) { SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); if (db.isOpen()) { db.execSQL("delete from person where name =?", new Object[] { name }); db.close(); } }
/** * 更新一条记录 * */ public void update(String name,String newname,String newphone) { SQLiteDatabase db = dbOpenHelper.getWritableDatabase(); if (db.isOpen()) { db.execSQL("update person set name=?,phone=? where name=?", new Object[] { newname,newphone,name }); db.close(); } }
/** * 查找全部 */ public List<Person> getAllPersons() { List<Person> persons=null; SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); if (db.isOpen()) { persons = new ArrayList<Person>(); Cursor cursor = db.rawQuery("select * from person ",null); while (cursor.moveToNext()) { Person person = new Person(); int nameindex = cursor.getColumnIndex("name"); int phoneindex = cursor.getColumnIndex("phone"); String name = cursor.getString(nameindex); String phone = cursor.getString(phoneindex); person.setName(name); person.setNumber(phone); persons.add(person); } cursor.close(); db.close(); } return persons; }
} SQLite事务的处理 Db.beginTransaction();开启事务 Try{ Db.execSQL(); Db.setTransactionSuccessful();//调用此方法会在执行到endTransaction()时提交当前事务,如果不调用此方法会回滚事务 }finally{ Db.endTransaction(); } Db.close(); (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|