Android(安卓)关于 如何使用外界导入的数据库文件
16lz
2022-01-21
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 blocke.printStackTrace();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public void closeDatabase(){this.database.close();}}
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 stubif(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/里
更多相关文章
- 导入的ANDROID 项目没有ANDROID的JAR包
- 导入的ANDROID 项目没有ANDROID的JAR包
- android 数据库操作 (非ContentProvider)
- Android(安卓)开发者从0到1发布一个微信小程序的采坑过程——使
- android基本的数据库创建和使用
- Android(安卓)SQLiteOpenHelper Sqlite数据库升级onUpgrade
- Android(安卓)Google Map应用开发详解
- Android导入第三方库出现问题
- Android(安卓)项目开发问题整理(持续更新)