Android导入数据库
来源:互联网 发布:软件开发助理工程师 编辑:程序博客网 时间:2024/06/01 19:20
一. 创建数据库建立Android项目
用Navicat Premium建立所需数据库若数据过多可以先在Excel中录入再进行导入
二.将现有数据库导入到Android里面
在Android的res文件夹下建立raw文件直接将数据库粘贴到raw下
然后建立一个java项目代码如下
public class DBOpenHelper {
private final int BUFFER_SIZE=400000;//缓冲区大小
public static final String DB_NAME="idioms.db"; //保存的数据库文件名
public static final String PACKAGE_NAME="com.example.happyidiom";//应用的包名
public static final String DB_PATH="/data"
+Environment.getDataDirectory().getAbsolutePath()+"/"
+PACKAGE_NAME+"/databases";//在手机里存放数据库的位置
private Context context;
public DBOpenHelper(Context context){
this.context=context;
}
public SQLiteDatabase openDatabase(){
try{
File myDataPath=new File(DB_PATH);
if(!myDataPath.exists()){
myDataPath.mkdirs();//如果没有这个数据库则创建
}
String dbfile=myDataPath+"/"+DB_NAME;
if(!(new File(dbfile).exists())){//判断数据库文件是否存在,若不存在直接导入,
//否则直接打开数据库
InputStream is=context.getResources().openRawResource(R.raw.idioms);
FileOutputStream fos=new FileOutputStream(dbfile);
byte[] buffer=new byte[BUFFER_SIZE];
int count=0;
while((count=is.read(buffer))>0){
fos.write(buffer, 0,count);
}
fos.close();
is.close();
}
SQLiteDatabase db=SQLiteDatabase.openOrCreateDatabase(dbfile, null);
return db;
}catch(FileNotFoundException e){
Log.e("Database","File not found");
e.printStackTrace();
}
catch(IOException e){
Log.e("Database","IO exception");
e.printStackTrace();
}
return null;
}
private final int BUFFER_SIZE=400000;//缓冲区大小
public static final String DB_NAME="idioms.db"; //保存的数据库文件名
public static final String PACKAGE_NAME="com.example.happyidiom";//应用的包名
public static final String DB_PATH="/data"
+Environment.getDataDirectory().getAbsolutePath()+"/"
+PACKAGE_NAME+"/databases";//在手机里存放数据库的位置
private Context context;
public DBOpenHelper(Context context){
this.context=context;
}
public SQLiteDatabase openDatabase(){
try{
File myDataPath=new File(DB_PATH);
if(!myDataPath.exists()){
myDataPath.mkdirs();//如果没有这个数据库则创建
}
String dbfile=myDataPath+"/"+DB_NAME;
if(!(new File(dbfile).exists())){//判断数据库文件是否存在,若不存在直接导入,
//否则直接打开数据库
InputStream is=context.getResources().openRawResource(R.raw.idioms);
FileOutputStream fos=new FileOutputStream(dbfile);
byte[] buffer=new byte[BUFFER_SIZE];
int count=0;
while((count=is.read(buffer))>0){
fos.write(buffer, 0,count);
}
fos.close();
is.close();
}
SQLiteDatabase db=SQLiteDatabase.openOrCreateDatabase(dbfile, null);
return db;
}catch(FileNotFoundException e){
Log.e("Database","File not found");
e.printStackTrace();
}
catch(IOException e){
Log.e("Database","IO exception");
e.printStackTrace();
}
return null;
}
}
然后编写测试类
public class DBOpenHelperTest extends AndroidTestCase{
public void testDBCopy(){
DBOpenHelper dBOpenHelper=new DBOpenHelper(getContext());
dBOpenHelper.openDatabase();
}
public void testDBCopy(){
DBOpenHelper dBOpenHelper=new DBOpenHelper(getContext());
dBOpenHelper.openDatabase();
}
}
然后在项目上右击后选择run as ——>Android Junit Test
出现以下两张图视为成功
0 0
- android 导入外部数据库
- android 导入外部数据库
- android 导入外部数据库
- android导入外部数据库
- android 数据库导入导出
- Android导入外部数据库
- Android导入外部数据库
- android 导入数据库
- Android导入数据库
- android导入外部数据库
- android数据库批量导入数据
- android raw文件夹导入数据库
- Android导入现有的数据库
- Android Sqlite 导入外部数据库
- android 导入外部数据库注意事项
- [Android]如何导入已有的外部数据库
- [Android]如何导入已有的外部数据库
- android导入外部已存在的数据库
- uva11400 lighting system design
- PDF复制乱码 -- 原因及解决方案
- "阻塞--中断"驱动模型在i2c在子系统、uart驱动、spi子系统中的实现
- SICP练习题1.11
- 面试:哈希:最长连续子串
- Android导入数据库
- c++ 异常处理
- OpenGLES—API(gl2.h)
- 九度OJ 1003
- Codeforces Round #354 (Div. 2) Pyramid of Glasses
- Java多线程 之 Thread子类 join方法(五)
- Android是选择自学还是选择培训?
- 三极管工作原理分析,精辟、透彻,看后你就懂
- emacs 替换