1.将数据库保存到手机内存中
1.1操作方式比较简单,我们只需要编写一个类继承sqliteOpenHelper类来完成相关的操作
public class sqliteHelper extends sqliteOpenHelper { private final static String DATABLBASE_NAME = "message.db"; private final static int DATABLBASE_VERSION = 1; //版本号 private final static String TABLE_NAME = "pro_msg"; //表名 public static String ID ="_id"; //自动增量 public static String PRO_NAME = "name"; //运行程序名称 public sqliteHelper(Context context) { super(context,DATABLBASE_NAME,null,DATABLBASE_VERSION); // TODO Auto-generated constructor stub } /** * 1.如果数据库文件不存在,那么sqliteOpenHelper会自动调用这个方法进行创建数据库(如:创建表,视图等..) * 2.如果数据库文件存在,则不执行此方法,再整个过程中,该方法只执行一次 * 3.此时可以再数据库中添加一些初始数据 * @param context */ @Override public void onCreate(sqliteDatabase db) { //create table message (id integer primariy key autoincrem) String sql = "create table "+TABLE_NAME+"("+ID+" integer primary key autoincrement," +PRO_NAME+" text);"; db.execsql(sql); } /** * 1,如果数据文件存在,并且当前的版本号高于上次创建或升级的版本号,该方法会被调用 * 2.在执行该方法的过程中,如果需要备份当前的数据,则需要更严谨的操作 * 3.删除原有数据库后创建新的数据库 * */ @Override public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { // TODO Auto-generated method stub } }
1.2 数据库的相关操作,采用sqliteHelper.getWritableDatabase或getReadableDatabase()方法获取sqliteDatabase对象来进行相关的操作
getReadableDatabase()并不是以只读方式打开数据库,而是先执行getWritableDatabase(),失败的情况下才调用。
getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的sqliteDatabase实例。
但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
getReadableDatabase()并不是以只读方式打开数据库,而是先执行getWritableDatabase(),失败的情况下才调用。
getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的sqliteDatabase实例。
但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
2.如何将数据存放在sd卡和apk一起打包发布
2.1将数据库放在SD卡
public class DBHelper { //定义数据库文件的路径 private String dbfile = android.os.Environment.getExternalStorageDirectory()+"/test.db"; private sqliteDatabase database; private static DBHelper instance; public static DBHelper getInstance(){ if(instance == null){ instance = new DBHelper(); } return instance; } //创建数据表 private DBHelper(){ File file = new File(dbfile); if(file.exists()) file.delete(); String createTable = "create table person (id integer primary key autoincrement,name varchar(50))"; database = getDatbase(); database.execsql(createTable); } /** * 获得数据库操作对象 * @return */ private sqliteDatabase getDatbase(){ return sqliteDatabase.openOrCreateDatabase(dbfile,null); } /** * 插入数据测试 */ public long insertData(String data){ ContentValues cv = new ContentValues(); cv.put("name",data); // database= getDatbase(); long rs = database.insert("person",cv); return rs; } /** * 查询数据 * @return */ public String selectData(){ String rs = null; String sql = "select name from person"; // database = getDatbase(); Cursor cursor = database.rawQuery(sql,null); if(cursor.moveToLast()){ rs = cursor.getString(0); } return rs; }
2.2 数据库随apk打包发布