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

683人阅读 评论(0) 收藏 举报
  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/里

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:377314次
    • 积分:5218
    • 等级:
    • 排名:第5217名
    • 原创:142篇
    • 转载:149篇
    • 译文:1篇
    • 评论:85条
    ★☆个人说明☆★
    QQ:664271046
    E-mail:ihrthk@gmail.com
    微信:zhangls
    Android UI专栏
    我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员。
    最新评论