开发android系统时关于sqlite使用时用法
2013-05-04 23:05
375 查看
最近完成一个android大作业,在使用sqlite采用了一些技巧,希望能给有需要的人以帮助. 我们组做的是一个关于手机美食推荐的app,在手机端采用sqlite来储存数据,但是我们在使用的使用候老是遇到一些麻烦,因为sqlite是一个轻量级的数据库,我们在设计数据库的时候,直接用adb直接从里面模拟器的文件系统里拖出来的.也可以直接打开FileExplore,找到对应的目录,然后把数据库文件拖拽出来.设计好了之后,我们还直接在里面添加数据.因为数据量比较大,如果采用在程序中采用sql语句插入,这样十分的不现实.但是我们放回去之后,我再运行程序,居然报错了.后来一看错误,每一次运行都会运行数据库创建的语句,后来我们干脆采用把数据库文件放在asset文件里,在android程序初始化时,直接把数据库复制到它本来应该在的目录下,后来终于没有报错了。
![](http://img1.51cto.com/attachment/201305/121001789.jpg)
数据库文件放在assets目录下:
然后在代码中执行复制操作:
本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1193199
![](http://img1.51cto.com/attachment/201305/121001789.jpg)
数据库文件放在assets目录下:
然后在代码中执行复制操作:
package com.example.db; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import android.R; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper{ private Context context; private final String DB_PATH = "/data/data/com.example.lfm/databases/"; private final String DB_NAME = "FOOD.db"; public DBHelper(Context context) { // TODO Auto-generated constructor stub this.context = context; } public SQLiteDatabase openDatabase() { SQLiteDatabase database = null; //检查数据库文件是否存在,如果已经存在那么就什么都不用做 if(!new File(DB_PATH+DB_NAME).exists()) { File f = new File(DB_PATH); if (!f.exists()) { f.mkdir(); //创建数据库储存目录 } try { //复制数据库文件 InputStream is = context.getAssets().open(DB_NAME); OutputStream os = new FileOutputStream(DB_PATH + DB_NAME); byte[] buffer = new byte[1024]; int length; while((length = is.read(buffer)) > 0) { os.write(buffer, 0, length); } os.flush(); os.close(); is.close(); database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, null); } catch (Exception e){ e.printStackTrace(); } } else { database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, null); } return database; } }
本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1193199
相关文章推荐
- 关于android开发中使用系统权限报错的问题
- 关于AndroidManifest.xml开发中使用系统权限报错的问题
- Android开发,关于Canvas的使用,绘图的各种用法
- ndk开发:使用android系统的libsqlite.so编译代码
- 为什么Android系统需要使用C、C++和Java语言共同开发
- Android关于开发过程中使用Webview时的基本设置。
- android-关于SQLite的使用
- 关于Android开发中如何使用dp表示长宽
- Android开发 -- 关于RecylerView的使用和RecylerViewAdapter的实现及监听
- 浅谈Android系统开发中LOG的使用
- 使用系统libsqlite.so 进行ndk 开发
- Android 开发中使用 SQLite 数据库
- [置顶] Android开发—使用系统控件获取当前时间
- Android开发存储方式详解之SQLite使用实例
- Android开发中使用adb shell命令出现sqlite3 : not found 问题
- Android开发中使用adb shell命令出现sqlite3 : not found 问题
- Android开发中使用sqlite3出现sqlite3 : not found 问题
- android 测试 --使用sqlite3查看手机数据库系统
- Android开发之——SQLite使用方法
- 浅谈Android系统开发中LOG的使用