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/里

相关文章推荐

网卡驱动4-做一个与外界交互的虚拟网卡3(调用真实网卡接收数据以及napi使用)

//vnic_rcv是接受vnic包的处理函数 static int vnic_rcv(struct sk_buff *skb, structnet_device *dev, struct pack...

Android 使用raw文件下的sqlite数据库以及分页查询

看别人的博客多了,自己也写点东西来分享下! 由于Assets下的单个文件大小最多只能是1M,所以我们不能把可能会偏大的数据库放到Assets文件夹下面。为此Android为我们提供了一个解决方案,将数...

android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法

在命令行下不能使用sqlite3命令是因为在system/xbin目录下没有sqlite3这个可执行文件,需要向这个目录中加入sqlite3这个可执行文件,原装的android手机操作系统中是有这个可...

Android 中使用预先创建的数据库文件

Blog - Using your own SQLite database in Android applications Posted March 3rd, 2009 by Juan-Manue...

Android 使用外部db数据库文件

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

android手机命令行下不能使用sqlite3命令查看*.db数据库文件解决办法

最近工作有点忙,没有空闲的时间来写博客了。最近在研究Android手机系统的知识,下面总结一下我在开发过程中遇到的问题。android手机命令行下不能使用sqlite3命令查看*.db数据库。一.原因...

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

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

android开发之使用SQLite数据库(db文件)

在开发中,有时需要使用db文件数据库,所以就需要将其导入项目,再将其使用程序写入到应用的db文件下使用。 代码很简单,可以拿来直接使用。 要使用需要两个步骤: 1.创建raw文件,导入db文件,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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