Sqlite 数据库的相关操作
来源:互联网 发布:路径规划软件 编辑:程序博客网 时间:2024/04/26 07:08
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 */@Overridepublic 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.删除原有数据库后创建新的数据库 * */@Overridepublic 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",null, 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打包发布
手动创建sqlite数据库(可采用SQLite Expert Personal )该软件和常用的数据库软件类似
2.2.1 在res\raw文件夹中放入我们手动创建的数据库,然后随apk一起发布。但是如何访问我们的数据库呢?
2.2.2 apk文件相当于Windows中的exe文件,大家试想,exe文件在启动时,文件大小怎么可能会发生变化呢? 因此需要在第一次运行程序时将数据库文件复制到内存卡或者SD卡中,复制可采用operRawResource方法获得res\raw目录中资源文件的inputStream对象。然后进行其他的操作。当然我们的数据库文件也可以选择从网络上下载,而不打包在apk中,这样省去了复制的操作,但这样会造成发布不方便以及耗费过多的网络流量的问题。采用SQLiteDatabase.openOrCreateDatabase(dbfile, null);获得SQLiteDatabase进行相关的操作
- Sqlite 数据库的相关操作
- Sqlite数据库相关操作
- SQLite数据库相关操作
- android SQLite数据库相关的操作
- c#中sqlite数据库相关的一些操作总结
- sqlite 数据库的操作
- SQLite数据库的操作
- sqlite数据库的操作
- SQLite数据库的操作
- sqlite数据库的操作
- 数据库--sqlite的操作
- SQLite数据库的操作
- sqlite相关操作的sqlite语句
- SQLite数据库建立及相关操作
- 黑马程序员----------Android 数据库 SQLite 相关操作
- android Sqlite数据库的操作
- android sqlite数据库的操作
- android的sqlite数据库操作
- javascript与html网页内的汉字显示为乱码如何解决
- AIR Native Extension on Android - Hello World(1) 简介
- poj 3067 树状数组 Japan
- oracle 物理读 逻辑读的理解
- 关于继承方式和访问权限
- Sqlite 数据库的相关操作
- remastersys debian or ubuntu
- 一个用VB编写的监控别人上网的软件例子
- 关于DirectUI
- Mixing Objective-C, C++ and Objective-C++: an Updated Summary
- java生成唯一ID简单方法
- 一个app,多个入口图标,activity-alias实现多程序入口并显示指定view完成
- oracle 中的OracleDBConsole(sid)无法启动
- SQL Server 表变量与临时表区别