Android使用已有sqlite数据库——内部存储
来源:互联网 发布:dht网络翻墙 编辑:程序博客网 时间:2024/05/28 01:35
——热爱开源,乐于分享
Android使用已有sqlite数据库——内部存储
上一篇介绍了如何在手机sd卡上使用已有的sqlite数据库,但是如果手机没有sd卡这个外部存储,则怎么实现呢?今天讲述使用Android手机内部存储使用已有的sqlite数据库。
一、拷贝数据库文件到当前工程
拷贝到res/raw下:
二、代码:
这是我在利用Android自动提示框实现的模糊匹配的项目中加入了使用内部存储读写已有sqlite数据的代码:(核心是importDatabase()这个方法)
亲测可用!!!
package com.liuwan.search;import android.app.Activity;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.os.Bundle;import android.view.View;import android.widget.AutoCompleteTextView;import android.widget.LinearLayout;import com.liuwan.search.util.SearchAdapter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;public class MainActivity extends Activity implements View.OnClickListener { private Context mcontext; private final String DATABASE_PATH = android.os.Environment .getExternalStorageDirectory().getAbsolutePath() + "/dictionary";//获取sd卡路径 private final String DATABASE_FILENAME = "search.db";//数据库文件名称 private SQLiteDatabase database ;//数据库对象 private LinearLayout empty; private AutoCompleteTextView search; private String[] str; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mcontext=this; database=importDatabase(); str=getData(); empty = (LinearLayout) findViewById(R.id.empty); empty.setOnClickListener(this); search = (AutoCompleteTextView) findViewById(R.id.search); // 自动提示适配器// ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str); // 支持拼音检索 SearchAdapter<String> adapter = new SearchAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, str, SearchAdapter.ALL); search.setAdapter(adapter); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.empty: search.setText(""); break; } } private String[] getData(){ //String[] str={"大小小","小大大","大大小"}; String sql = "select content from t_search "; Cursor cursor = database.rawQuery(sql,null); int i=0; String[] str=new String[5]; /* str[0]="大小小"; str[1]="小大大"; str[2]="大大小"; str[3]="大大大小小小"; str[4]="大小大大小小";*/ int num = cursor.getCount(); cursor.moveToFirst(); for (int j=0;j<num;j++){ str[i]=cursor.getString(cursor.getColumnIndex("content")); i++; cursor.moveToNext(); } cursor.close(); database.close(); return str; } public SQLiteDatabase importDatabase() { // 存放数据库的目录 String dirPath = "/data/data/com.liuwan.search"; // String dirPath =mcontext.getFilesDir().getAbsolutePath(); File dir = new File(dirPath); if (!dir.exists()) { dir.mkdirs(); } // 数据库文件 File file = new File(dir, "search.db"); try { if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } // 加载需要导入的数据库 InputStream is = getResources() .openRawResource(R.raw.search); FileOutputStream fos = new FileOutputStream(file); byte[] buffere = new byte[is.available()]; is.read(buffere); fos.write(buffere); is.close(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } // 打开/sdcard/dictionary目录中的dictionary.db文件 SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase( dirPath +"/"+ "search.db", null); return database; }}
阅读全文
0 0
- Android使用已有sqlite数据库——内部存储
- Android数据存储—使用SQLite数据库
- Android数据存储—使用SQLite数据库
- Android—Sqlite数据库存储方法的使用
- Android——数据库sqlite存储数据
- Android第六讲——数据存储(五种)SharedPreferences、内部存储(缓存cache)、外部存储(Sdcrad)、SQLite数据库、网络存储
- Android开发 SQLite 通过.db文件导入已有数据库
- Android中数据存储——SQLite数据库存储数据
- Android数据存储——SQLite数据库存储
- android开发之使用SQLite数据库存储
- android开发之使用SQLite数据库存储
- Android 数据库存储 SQLite
- Android -SQLite数据库存储
- Android SQLite数据库存储
- Android SQLite数据库存储
- Android SQLite 数据库存储
- Android SQLite 数据库存储
- Android----SQLite数据库存储
- ssm往mysql中导入excel表格
- (11)纠结的故事点
- CentOS 之 开机自启
- C#笔记【1】
- 杭电 OJ 1201 18岁生日
- Android使用已有sqlite数据库——内部存储
- nyoj218 Dinner
- csu 1562 Fun House
- 有限元方法基础入门教程(一维弹性问题的有限元程序)
- BottomNavigationView(design包提供的一个组件)
- (12)review meeting和demo的关系
- BZOJ 1121 [POI2008]激光发射器SZK 结论题
- 【STM32】 keil软件介绍--工具栏
- (13)回顾会议