- package com.jamin;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import android.content.Context;
- import android.content.res.Resources.NotFoundException;
- import android.database.sqlite.SQLiteDatabase;
- import android.os.Environment;
- public class DBManager {
- private final int BUFFER_SIZE = 400000;
- public static final String DB_NAME = "callattribution.db";
- public static final String PACKAGE_NAME = "com.jamin";
- public static final String DB_PATH = "/data"
- + Environment.getDataDirectory().getAbsolutePath() + "/"
- + PACKAGE_NAME;
- private SQLiteDatabase database;
- private Context context;
- DBManager(Context context){
- this.context = context;
- }
- public void openDatabase(){
- this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);
- }
- public SQLiteDatabase openDatabase(String path){
- try {
- if(!(new File(path).exists())){
- InputStream is = this.context.getResources().openRawResource(R.raw.callattribution);//导入数据库
- FileOutputStream fos = new FileOutputStream(path);
- 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(path, null);
- return db;
- } catch (NotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
- public void closeDatabase(){
- this.database.close();
- }
- }
- <pre name="code" class="java">package com.jamin;
- import android.app.Activity;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
- public class CallAtributionActivity extends Activity implements OnClickListener{
- /** Called when the activity is first created. */
- Button button;
- EditText et;
- TextView tv;
- public DBManager dbhelper;
- SQLiteDatabase sqldb;
- private static final String TAG = "jamin";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- button = (Button) findViewById(R.id.button);
- et = (EditText) findViewById(R.id.edittext);
- tv = (TextView) findViewById(R.id.textview);
- dbhelper = new DBManager(this);
- dbhelper.openDatabase();
- dbhelper.closeDatabase();
- button.setOnClickListener(this);
- sqldb = SQLiteDatabase.openOrCreateDatabase(DBManager.DB_PATH + "/" + DBManager.DB_NAME, null);
- }
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if(v == button){
- Log.d(TAG, "onClick");
- String searchstring = et.getText().toString();
- Cursor c = sqldb.rawQuery("select city from attribution where " +"num=" +Integer.parseInt(searchstring) , null);
- c.moveToFirst();
- tv.setText(c.getString(c.getColumnIndex("city")));
- }
- }
- }
这个代码还存在很多BUG,只是演示如何使用导入的数据库,把DB文件放到res/raw下,然后通过DBManager 把数据库导入data/data/里