Android 关于 如何使用外界导入的数据库文件

转载 2012年03月24日 23:01:08
  1. package com.jamin;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8.   
  9. import android.content.Context;  
  10. import android.content.res.Resources.NotFoundException;  
  11. import android.database.sqlite.SQLiteDatabase;  
  12. import android.os.Environment;  
  13.   
  14. public class DBManager {  
  15.   
  16.     private final int BUFFER_SIZE = 400000;  
  17.     public static final String DB_NAME = "callattribution.db";  
  18.     public static final String PACKAGE_NAME = "com.jamin";  
  19.     public static final String DB_PATH = "/data"  
  20.                         + Environment.getDataDirectory().getAbsolutePath() + "/"  
  21.                         + PACKAGE_NAME;  
  22.     private SQLiteDatabase database;  
  23.     private Context context;  
  24.       
  25.     DBManager(Context context){  
  26.         this.context = context;  
  27.           
  28.     }  
  29.     public void openDatabase(){  
  30.         this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);  
  31.     }  
  32.       
  33.     public SQLiteDatabase openDatabase(String path){  
  34.   
  35.         try {  
  36.             if(!(new File(path).exists())){  
  37.                 InputStream is = this.context.getResources().openRawResource(R.raw.callattribution);//导入数据库  
  38.                 FileOutputStream fos = new FileOutputStream(path);  
  39.                 byte [] buffer = new byte[BUFFER_SIZE];  
  40.                 int count = 0;  
  41.   
  42.                 while((count = is.read(buffer))>0){  
  43.                     fos.write(buffer , 0 , count);  
  44.                 }  
  45.                 fos.close();  
  46.                 is.close();  
  47.   
  48.             }  
  49.             SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, null);  
  50.             return db;  
  51.               
  52.         } catch (NotFoundException e) {  
  53.             // TODO Auto-generated catch block  
  54.             e.printStackTrace();  
  55.         } catch (FileNotFoundException e) {  
  56.             // TODO Auto-generated catch block  
  57.             e.printStackTrace();  
  58.         }catch (IOException e) {  
  59.             // TODO Auto-generated catch block  
  60.             e.printStackTrace();  
  61.         }  
  62.   
  63.   
  64.         return null;  
  65.     }  
  66.     public void closeDatabase(){  
  67.         this.database.close();  
  68.     }  
  69.   
  70. }  



[java] view plaincopy
  1. <pre name="code" class="java">package com.jamin;  
  2.   
  3. import android.app.Activity;  
  4. import android.database.Cursor;  
  5. import android.database.sqlite.SQLiteDatabase;  
  6. import android.os.Bundle;  
  7. import android.util.Log;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.widget.Button;  
  11. import android.widget.EditText;  
  12. import android.widget.TextView;  
  13.   
  14. public class CallAtributionActivity extends Activity implements OnClickListener{  
  15.     /** Called when the activity is first created. */  
  16.       
  17.     Button button;  
  18.     EditText et;  
  19.     TextView tv;  
  20.     public DBManager dbhelper;  
  21.     SQLiteDatabase sqldb;  
  22.     private static final String TAG = "jamin";  
  23.       
  24.     @Override  
  25.     public void onCreate(Bundle savedInstanceState) {  
  26.         super.onCreate(savedInstanceState);  
  27.         setContentView(R.layout.main);  
  28.           
  29.         button = (Button) findViewById(R.id.button);  
  30.         et = (EditText) findViewById(R.id.edittext);  
  31.         tv = (TextView) findViewById(R.id.textview);  
  32.         dbhelper = new DBManager(this);  
  33.         dbhelper.openDatabase();  
  34.         dbhelper.closeDatabase();  
  35.         button.setOnClickListener(this);  
  36.         sqldb = SQLiteDatabase.openOrCreateDatabase(DBManager.DB_PATH + "/" + DBManager.DB_NAME, null);  
  37.           
  38.     }  
  39.   
  40.     public void onClick(View v) {  
  41.         // TODO Auto-generated method stub  
  42.         if(v == button){  
  43.             Log.d(TAG, "onClick");  
  44.             String searchstring = et.getText().toString();  
  45.               
  46.             Cursor c = sqldb.rawQuery("select city from attribution where " +"num=" +Integer.parseInt(searchstring) , null);  
  47.               
  48.             c.moveToFirst();  
  49.             tv.setText(c.getString(c.getColumnIndex("city")));  
  50.         }  
  51.     }  
  52.       
  53. }  



这个代码还存在很多BUG,只是演示如何使用导入的数据库,把DB文件放到res/raw下,然后通过DBManager 把数据库导入data/data/里

Android如何导入外部已存在的数据库文件(附源码)

*以下经验,来源于个人在写项目的时候,遇到的问题.前些时间我正在做一个项目,由于项目需要用到已有的外部数据库文件。第一想法就是直接通过输入输出流将文件拷贝到database目录下,但是怎么样拷贝才算是...
  • Gpwner
  • Gpwner
  • 2016年11月17日 09:43
  • 1386

android导入外部数据库到项目中的使用方法

android导入外部数据库到项目中的使用方法最近的一个项目,需要用到很多数据,所以想的是用数据库的形式进行存储, 虽然安卓中自带的有创建数据库,表的操作,但是因为要插入的数据太多, 太麻烦,...
  • HAndroidevelopcker
  • HAndroidevelopcker
  • 2017年03月30日 19:47
  • 596

Android 使用外部db数据库文件

先简单说下步骤: 将格式为.db的数据库文件放到android项目assets目录中; 在程序必要的时候,将其“拷贝”(文件读取)到Android 程序默认的数据库存储目录中,一般路径为“/data/...
  • u013067184
  • u013067184
  • 2015年08月19日 19:36
  • 5823

将外部sqlite3数据库导入到Android项目中(android studio)

第一步:将数据库文件放入到assets目录中。注意android studio需要将assets目录建在main项目下。即和java,res等文件夹是同级的。 第二步:首次使用app,将as...
  • u013680097
  • u013680097
  • 2016年01月20日 18:50
  • 4331

Android Studio 拷贝使用外部数据库

Android Studio 拷贝使用外部数据库
  • humorousz
  • humorousz
  • 2016年12月17日 18:26
  • 1798

如何将数据库文件导入数据库中(SQL)

如何将  .sql 数据文件导入到SQL sever中? 我一开始是准备还原数据库的,结果出现了如下问题。因为它并不是备份文件,所以我们无法进行还原。 正确方式: 先打开SQL sever 20...
  • huanghi11
  • huanghi11
  • 2015年02月08日 20:19
  • 2880

Android外部库引用

Android外部库引入需注意assets文件需要copy
  • kuailebeihun
  • kuailebeihun
  • 2014年09月05日 09:26
  • 860

如何在oracle中导入dmp数据库文件

--如何在oracle中导入dmp数据库文件?       Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文...
  • l5940293
  • l5940293
  • 2013年03月07日 13:47
  • 2632

C#遍历某文件夹下的所有文件,读取文件并插入到数据库中

前面文章http://blog.csdn.net/joqwer/article/details/38388653中
  • joqwer
  • joqwer
  • 2014年08月14日 09:26
  • 1230

android下访问已存在的sqlite数据库文件的办法

android下访问已存在的sqlite数据库文件的办法
  • li1500742101
  • li1500742101
  • 2015年09月17日 11:44
  • 3648
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 关于 如何使用外界导入的数据库文件
举报原因:
原因补充:

(最多只允许输入30个字)