Android基础心的之SQLite数据库加载
2011-03-24 21:27
302 查看
最近在学习androidSQLite数据库加载时,遇到了一些问题:
1.我在虚拟机外面创建的数据库文件,如何复制到虚拟机里面?(不是通过DDMS来复制,而是用程序)?
2.继承SQLiteOpenHelper类的子类,其中的OnCreate()重载方法到底是在什么情况下运行的?
第一个问题,我的解决方案如下:
在继承SQLiteOpenHelper的子类SQLiteHelp中,新建函数createDatabase:
在构造函数中调用createDatabase函数,可以解决第一个问题
注意,不能放在重载的方法OnCreate()中,当你第一次运行程序后,再次运行时,OnCreate函数不会运行
我试着故意删掉虚拟器中的数据库文件,如果你把函数放在OnCreate()中,运行会出错
第二个问题有待解决
1.我在虚拟机外面创建的数据库文件,如何复制到虚拟机里面?(不是通过DDMS来复制,而是用程序)?
2.继承SQLiteOpenHelper类的子类,其中的OnCreate()重载方法到底是在什么情况下运行的?
第一个问题,我的解决方案如下:
在继承SQLiteOpenHelper的子类SQLiteHelp中,新建函数createDatabase:
private void createDatabase(Context mContext) { // 输出路径 String outFileName = DB_PATH + DB_NAME; // 检测/创建数据库的文件夹 File dir = new File(DB_PATH); if (!dir.exists()) { dir.mkdir(); } // 如果文件夹已经存在了 else { // 检查文件是否存在 dir = new File(DB_PATH, DB_NAME); if (dir.exists()) return; } InputStream input = null; OutputStream output = null; // 从资源中读取数据库流 input = mContext.getResources().openRawResource(R.raw.driving_assistant); try { output = new FileOutputStream(outFileName); // 拷贝到输出流 byte[] buffer = new byte[2048]; int length; while ((length = input.read(buffer)) > 0) { output.write(buffer, 0, length); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭输出流 try { output.flush(); output.close(); } catch (IOException e) { } // 关闭输入流 try { input.close(); } catch (IOException e) { } } }
在构造函数中调用createDatabase函数,可以解决第一个问题
注意,不能放在重载的方法OnCreate()中,当你第一次运行程序后,再次运行时,OnCreate函数不会运行
我试着故意删掉虚拟器中的数据库文件,如果你把函数放在OnCreate()中,运行会出错
第二个问题有待解决
相关文章推荐
- Android基础之使用inflater来实现动态加载布局
- Android开发笔记(三十)SQLite数据库基础操作
- 【Android 基础】图片加载框架之Picasso利器
- Android动态加载基础 ClassLoader工作机制
- 【Android基础】AsyncTask示例——加载网络图片
- Android源码基础解析之Activity布局加载流程
- Android插件化开发基础之App如何动态加载类
- android基础---->SQLite数据库的使用
- 【Android基础】webview加载网页出现("找不到网页net:err_unknown_url_scheme")
- android图片加载- Glide基础使用
- Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]
- Android-自定义控件基础-ListView的加载更多
- Android开发之基础----------多媒体图片加载、拍照和摄像(一)
- 打造Android集合控件数据绑定(支持添加监听,支持AbsListView与RecycleView,支持异步加载等)(一)基础篇
- Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]
- Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]
- Android插件化开发之动态加载基础之ClassLoader工作机制
- Android基础学习总结(十四)——Bitmap应用与高效加载
- [Android] SQLite数据库之增删改查基础操作
- Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]