android SQLite数据库使用总结之(一)从加载本地数据库开始
好久以前就写了,但是一直拖拖拉拉的,在草稿箱里放了两个星期还没写完,想想这样托下去又要废掉了,还是分开来吧,写多少是多少。
android的SQLite数据库简单使用一段时间了,现在想抽些时间总结下,不然总感觉很乱
SQLite Expert,一款SQLite数据库操作工具,下载地址:http://www.sqliteexpert.com/ ,Personal Edition是免费的,日常使用基本足够,需要专业版的可以自行网上寻找。当然,其他免费的工具还有很多,如:SQLite Database Browser,SQLiteManager等。
开发的时候,我们可能会需要一些初始化数据,比如城市信息,这样我们就可以事先创建好一个数据库,写入初始数据,将其放入自己的apk中一起分发。这个时候我们就可以直接从资源文件中读取这个数据库文件写入到应用的数据库目录或者SDCard中,然后就可以对其操作,拷贝代码如下:
/** * 拷贝资源中数据库 * @param where 1SDCARD,2LOCAL */public void copyDataBase(int where) {// 每个应用都有一个数据库目录,他位于 /data/data/packagename/databases/目录下String packageName = "com.ttdevs.citydata"; // xml中配置的String dbName = "ChinaCity.db";String dbPath = null;if(where == 1){ // sdcarddbPath = Environment.getExternalStorageDirectory() + File.separator + dbName;} else { // localdbPath = "/data/data/" + packageName + "/databases/" + dbName;}if(where == 2){new File("/data/data/" + packageName + "/databases/").mkdirs();}if ( where == 1 && !Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { return ; // 未挂载外部存储,拷贝到内部不用判断}File dbFile =new File(dbPath);if(dbFile.exists()){dbFile.delete();}try {dbFile.createNewFile();} catch (IOException e1) {e1.printStackTrace();return ;}try {InputStream is = getResources().getAssets().open(dbName);OutputStream os = new FileOutputStream(dbPath);byte[] buffer = new byte[1024];int length = 0;while ((length = is.read(buffer)) > 0) {os.write(buffer, 0, length);}os.flush();os.close();is.close();} catch (IOException e) {e.printStackTrace();}Toast.makeText(getApplicationContext(), "拷贝成功", Toast.LENGTH_LONG).show();}代码不是很严谨,凑活着看哈。经过以上步骤,我们就可以开始使用数据库,数据库的常用操作,在以后的博客中继续。
ChinaCity.db数据库:下载