最近项目中要实现android读取sqlite数据库文件,在这里先做一个英汉字典的例子。主要是输入英语到数据库中查询相应的汉语意思,将其答案输出。数据库采用sqlite3.

如图:

实现过程完全是按照参考文章中所述。其中要说明的是,程序在第一次启动的时候,会把数据库安装到内存卡上面,从而可以读却数据库。

相关的代码:

  1. package com.easymorse;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.InputStream;
  5. import android.app.Activity;
  6. import android.app.AlertDialog;
  7. import android.database.Cursor;
  8. import android.database.sqlite.SQLiteDatabase;
  9. import android.os.Bundle;
  10. import android.text.Editable;
  11. import android.text.TextWatcher;
  12. import android.util.Log;
  13. import android.view.View;
  14. import android.view.View.OnClickListener;
  15. import android.widget.AutoCompleteTextView;
  16. import android.widget.Button;
  17. public class Dictionary extends Activity  implements OnClickListener, TextWatcher{
  18. private final String DATABASE_PATH = android.os.Environment
  19. .getExternalStorageDirectory().getAbsolutePath()
  20. + "/dictionary";
  21. private final String DATABASE_FILENAME = "dictionary.db3";
  22. SQLiteDatabase database;
  23. Button btnSelectWord;
  24. AutoCompleteTextView actvWord;
  25. @Override
  26. public void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.main);
  29. // 打开数据库,database是在Main类中定义的一个SQLiteDatabase类型的变量
  30. database = openDatabase();
  31. // 下面的代码装载了相关组件,并设置了相应的事件
  32. btnSelectWord = (Button) findViewById(R.id.btnSelectWord);
  33. actvWord = (AutoCompleteTextView) findViewById(R.id.actvWord);
  34. btnSelectWord.setOnClickListener(this);
  35. actvWord.addTextChangedListener(this);
  36. }
  37. public void onClick(View view)
  38. {
  39. //  查找单词的SQL语句
  40. String sql = "select chinese from t_words where english=?";
  41. Cursor cursor = database.rawQuery(sql, new String[]
  42. { actvWord.getText().toString() });
  43. String result = "未找到该单词.";
  44. //  如果查找单词,显示其中文信息
  45. if (cursor.getCount() > 0)
  46. {
  47. //  必须使用moveToFirst方法将记录指针移动到第1条记录的位置
  48. cursor.moveToFirst();
  49. result = cursor.getString(cursor.getColumnIndex("chinese"));
  50. Log.i("tran", "success"+result);
  51. }
  52. //  显示查询结果对话框
  53. new AlertDialog.Builder(this).setTitle("查询结果").setMessage(result)
  54. .setPositiveButton("关闭", null).show();
  55. }
  56. private SQLiteDatabase openDatabase() {
  57. try {
  58. // 获得dictionary.db文件的绝对路径
  59. String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
  60. File dir = new File(DATABASE_PATH);
  61. // 如果/sdcard/dictionary目录中存在,创建这个目录
  62. if (!dir.exists())
  63. dir.mkdir();
  64. // 如果在/sdcard/dictionary目录中不存在
  65. // dictionary.db文件,则从res\raw目录中复制这个文件到
  66. // SD卡的目录(/sdcard/dictionary)
  67. if (!(new File(databaseFilename)).exists()) {
  68. // 获得封装dictionary.db文件的InputStream对象
  69. InputStream is = getResources().openRawResource(
  70. R.raw.dictionary);
  71. FileOutputStream fos = new FileOutputStream(databaseFilename);
  72. byte[] buffer = new byte[8192];
  73. int count = 0;
  74. // 开始复制dictionary.db文件
  75. while ((count = is.read(buffer)) > 0) {
  76. fos.write(buffer, 0, count);
  77. }
  78. fos.close();
  79. is.close();
  80. }
  81. // 打开/sdcard/dictionary目录中的dictionary.db文件
  82. SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
  83. databaseFilename, null);
  84. return database;
  85. } catch (Exception e) {
  86. }
  87. return null;
  88. }
  89. @Override
  90. public void afterTextChanged(Editable s) {
  91. }
  92. @Override
  93. public void beforeTextChanged(CharSequence s, int start, int count,
  94. int after) {
  95. }
  96. @Override
  97. public void onTextChanged(CharSequence s, int start, int before, int count) {
  98. }
  99. }

android直接读取项目中的sqlite数据库的更多相关文章

  1. 在项目中使用SQLite数据库小结

    ------------------------------------------------------------------------推荐: - VS2012 使用 1.0.84 版的库 - ...

  2. 在 Android 应用程序中使用 SQLite 数据库以及怎么用

    part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...

  3. android中与SQLite数据库相关的类

    为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...

  4. 在Android 开发中使用 SQLite 数据库笔记

    SQLite 介绍   SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PH ...

  5. Android虚拟机中的sqlite数据库文件

    Android虚拟机中的sqlite数据库文件 ①

  6. Android+Jquery Mobile学习系列(5)-SQLite数据库

    SQLite是轻量级的.嵌入式的.关系型数据库,目前已经在iPhone.Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠. 因为Android已经集成了SQLit ...

  7. 2014-08-01 ASP.NET中对SQLite数据库的操作——ADO.NET

    今天是在吾索实习的第18天.我主要学习了如何在ASP.NET中对SQLite数据库的操作,其基本操作如下: 添加引用System.Data.SQLite.dll(PS:在网页里面任意找到适合的.NET ...

  8. 在Xamarin.iOS项目中使用预设数据库

    在Xamarin.iOS项目中使用预设数据库 当开发者准备好一个预设数据库文件后,就可以将这个数据库文件添加到创建的项目中了.本节将分别在Xamarin.iOS和Xamarin.Android项目中使 ...

  9. Go语言中使用SQLite数据库

    Go语言中使用SQLite数据库 1.驱动 Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接口的 https://github.com/mattn/go-sqlite3 ...

随机推荐

  1. 数据库实例: STOREBOOK > 用户 > 编辑 用户: DBSNMP

    ylbtech-Oracle:数据库实例: STOREBOOK  >  用户  >  编辑 用户: DBSNMP 编辑 用户: DBSNMP 1. 一般信息返回顶部 1.1, 1.2, 2 ...

  2. WIDGET和鼠标特效的DEMO

    原创WIDGET和鼠标特效的DEMO, 键盘1 平移Widget键盘2 旋转Widget键盘3 缩放Widget DEMO中,实现对BOX的旋转缩放位移 下载地址: http://pan.baidu. ...

  3. 第十二章 springboot + mongodb(复杂查询)

    简单查询:使用自定义的XxxRepository接口即可.(见 第十一章 springboot + mongodb(简单查询)) 复杂查询:使用MongoTemplate以及一些查询条件构建类(Bas ...

  4. nginx 域名绑定 域名, nginx 域名绑定 端口

    一.nginx 域名绑定 域名 nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件 ...

  5. c#逐行分元素读取记事本txt数据写进数据库

    其实这里最关键的一个方法是 StreamReader类里的 ReadLine();这个方法可以逐行读取txt流里面的数据.写了个简单的demo,已经加上了详细的注释说明.   ok,好了,不废话,下面 ...

  6. 理解JavaScript私有作用域

    私有作用域:跟外界的变量方法毫不冲突,豪无关系 var str ="javascript"; (function(){ alert(str); //undefined var st ...

  7. windows 用户变量和系统变量的差别

    点击"我的电脑→属性→高级系统设置"标签的"环境变量"button,出现"环境变量"对话框,假设当前是以Administrator登录系统的 ...

  8. java 反射获取属性值 方法

    public static void main(String[] args) throws SecurityException, ClassNotFoundException, IllegalArgu ...

  9. AutoPlay Menu Builder入门教程

    1 拖动窗口可以设置主界面的窗口大小,在下面有版面预览 2 常用东西介绍.右侧的素材库除了按钮还有图像,背景,音乐等.使用按钮的时候选中需要的按钮样式,双击即可上屏.图形按钮即使可以使用图像作为背景的 ...

  10. ZH奶酪:【数据结构与算法】并查集基础

    1.介绍 并查集是一种树型数据结构,用于处理一些不相交集合的合并问题. 并查集主要操作有: (1)合并两个不相交集合: (2)判断两个元素是否属于同一个集合: (3)路径压缩: 2.常用操作 用fat ...