SQLiteOpenHelper是Android提供的一个管理数据库的工具集,可用于管理数据库的创建和版本更新。
用SQLiteOpenHelper写的单词本DEMO
1)开发数据库
package com.example.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class MyDatabaseHelper extends SQLiteOpenHelper {
final String CREATE_TABLE_SQL = "create table dict(_id integer primary " +
"key autoincrement , word , detail)";
public MyDatabaseHelper(Context context, String name, int version) {
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
//第一次使用数据库时自动建表
db.execSQL(CREATE_TABLE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d("XX", "oldVersion=" + oldVersion + ",newVersion" + newVersion);
}
}
2)插入记录的单词的Activity
```java
代码
```package com.example.db;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class DictActivity extends Activity {
MyDatabaseHelper dbHelper;
Button insert = null;
Button search = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dbHelper = new MyDatabaseHelper(this, "myDict.db3", 1);
insert = (Button) findViewById(R.id.main_insert);
search = (Button) findViewById(R.id.main_search);
insert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//获取用户输入
String word = ((EditText) findViewById(R.id.main_word)).getText().toString();
String detail = ((EditText) findViewById(R.id.main_detail)).getText().toString();
//插入生词记录
insertData(dbHelper.getReadableDatabase(), word, detail);
Toast.makeText(DictActivity.this, "添加生词成功!", 8000).show();
}
});
search.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//获取用户输入
String key = ((EditText) findViewById(R.id.main_edit2)).getText().toString();
//执行查询
Cursor cursor = dbHelper.getReadableDatabase().rawQuery(
"select * from dict where word like ? or detail like ?",
new String[]{"%" + key + "%", "%" + key + "%" });
//创建一个Bundle对象
Bundle data = new Bundle();
data.putSerializable("data", converCursorToList(cursor));
Intent intent = new Intent(DictActivity.this, ResultActivity.class);
intent.putExtras(data);
startActivity(intent);
}
});
}
protected ArrayList<Map<String, String>> converCursorToList(Cursor cursor) {
ArrayList<Map<String, String>> result = new ArrayList<Map<String,String>>();
//遍历Cursor结果集
while(cursor.moveToNext()){
Map<String, String> map = new HashMap<String, String>();
map.put("word", cursor.getString(1));
map.put("detail", cursor.getString(2));
result.add(map);
}
return result;
}
private void insertData(SQLiteDatabase db, String word, String detail){
db.execSQL("insert into dict values(null , ?, ?)"
, new String[]{word, detail});
}
@Override
protected void onDestroy() {
super.onDestroy();
if(dbHelper != null){
dbHelper.close();
}
}
}
3)显示查找的单词
package com.example.db;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class ResultActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
ListView listView = (ListView) findViewById(R.id.list);
Intent intent = getIntent();
Bundle data = intent.getExtras();
List<Map<String, String>> list = (List<Map<String, String>>) data.getSerializable("data");
SimpleAdapter adapter = new SimpleAdapter(ResultActivity.this, list, R.layout.line,
new String[]{"word", "detail"}, new int[]{R.id.line_edit1, R.id.line_edit2});
listView.setAdapter(adapter);
}
}