大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Android技巧 > 使用安卓读取sqlite数据库方法记录

使用安卓读取sqlite数据库方法记录

关键词:读取sqlitesqlite数据库安卓  阅读(3198) 赞(19)

[摘要]本文是对使用安卓读取sqlite数据库方法记录的讲解,对学习Android编程技术有所帮助,与大家分享。

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

如图:

image

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

相关的代码:

packagecom.easymorse;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.InputStream;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.os.Bundle;
importandroid.text.Editable;
importandroid.text.TextWatcher;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.AutoCompleteTextView;
importandroid.widget.Button;
publicclassDictionaryextendsActivityimplementsOnClickListener,TextWatcher{
privatefinalStringDATABASE_PATH=android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()
+"/dictionary";
privatefinalStringDATABASE_FILENAME="dictionary.db3";
SQLiteDatabasedatabase;
ButtonbtnSelectWord;
AutoCompleteTextViewactvWord;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//打开数据库,database是在Main类中定义的一个SQLiteDatabase类型的变量
database=openDatabase();
//下面的代码装载了相关组件,并设置了相应的事件
btnSelectWord=(Button)findViewById(R.id.btnSelectWord);
actvWord=(AutoCompleteTextView)findViewById(R.id.actvWord);
btnSelectWord.setOnClickListener(this);
actvWord.addTextChangedListener(this);
}
publicvoidonClick(Viewview)
{
//查找单词的SQL语句
Stringsql="selectchinesefromt_wordswhereenglish=?";
Cursorcursor=database.rawQuery(sql,newString[]
{actvWord.getText().toString()});
Stringresult="未找到该单词.";
//如果查找单词,显示其中文信息
if(cursor.getCount()>0)
{
//必须使用moveToFirst方法将记录指针移动到第1条记录的位置
cursor.moveToFirst();
result=cursor.getString(cursor.getColumnIndex("chinese"));
Log.i("tran","success"+result);
}
//显示查询结果对话框
newAlertDialog.Builder(this).setTitle("查询结果").setMessage(result)
.setPositiveButton("关闭",null).show();
}
privateSQLiteDatabaseopenDatabase(){
try{
//获得dictionary.db文件的绝对路径
StringdatabaseFilename=DATABASE_PATH+"/"+DATABASE_FILENAME;
Filedir=newFile(DATABASE_PATH);
//如果/sdcard/dictionary目录中存在,创建这个目录
if(!dir.exists())
dir.mkdir();
//如果在/sdcard/dictionary目录中不存在
//dictionary.db文件,则从res\raw目录中复制这个文件到
//SD卡的目录(/sdcard/dictionary)
if(!(newFile(databaseFilename)).exists()){
//获得封装dictionary.db文件的InputStream对象
InputStreamis=getResources().openRawResource(
R.raw.dictionary);
FileOutputStreamfos=newFileOutputStream(databaseFilename);
byte[]buffer=newbyte[8192];
intcount=0;
//开始复制dictionary.db文件
while((count=is.read(buffer))>0){
fos.write(buffer,0,count);
}
fos.close();
is.close();
}
//打开/sdcard/dictionary目录中的dictionary.db文件
SQLiteDatabasedatabase=SQLiteDatabase.openOrCreateDatabase(
databaseFilename,null);
returndatabase;
}catch(Exceptione){
}
returnnull;
}
@Override
publicvoidafterTextChanged(Editables){
}
@Override
publicvoidbeforeTextChanged(CharSequences,intstart,intcount,
intafter){
}
@Override
publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){
}
}



相关评论