初学Android、データストレージのSQLiteデータベースの使用(四十六)
SQLiteOpenHelperはAndroidが提供するsqliteデータベースを管理するツールクラスです
主にデータベースを作成し、データベースのバージョンを管理するために使用されます.このクラスは抽象クラスであり、このクラスを継承して実装する必要があるメソッドonCreate(SQLiteDatabase):データベースが初めて生産されるときにこのメソッドが呼び出され、一般的にこのメソッドでデータベーステーブルを生産します.onUpgrade(SQLiteDatabase,int,int):データベースのアップグレードが必要な場合、Androidシステムはこのメソッドをアクティブに呼び出します.一般的に、この方法でデータベース・テーブルを削除し、新しいデータベース・テーブルを構築します.もちろん、アプリケーションのニーズに応じて、他の操作が必要かどうかは異なります.onOpen(SQLiteDatabase):これはデータベースを開くときのコールバック関数であり、一般的には使用されません.
プログラムでこのクラスのメソッドgetWritableDatabase()またはgetReadableDatabase()メソッドを呼び出すと、データがない場合、Androidシステムは自動的にデータベースを生産します.データベースの使用が完了したら、close()メソッドを呼び出してデータベースを閉じてください.
次は単語の本プログラムの例です.フロントに単語を入力してデータベースに保存し、クエリーします.
line.xml
popup.xml
データベース・クエリー・ツールを使用して、レコードを挿入したばかりのことを確認します.
主にデータベースを作成し、データベースのバージョンを管理するために使用されます.このクラスは抽象クラスであり、このクラスを継承して実装する必要があるメソッドonCreate(SQLiteDatabase):データベースが初めて生産されるときにこのメソッドが呼び出され、一般的にこのメソッドでデータベーステーブルを生産します.onUpgrade(SQLiteDatabase,int,int):データベースのアップグレードが必要な場合、Androidシステムはこのメソッドをアクティブに呼び出します.一般的に、この方法でデータベース・テーブルを削除し、新しいデータベース・テーブルを構築します.もちろん、アプリケーションのニーズに応じて、他の操作が必要かどうかは異なります.onOpen(SQLiteDatabase):これはデータベースを開くときのコールバック関数であり、一般的には使用されません.
プログラムでこのクラスのメソッドgetWritableDatabase()またはgetReadableDatabase()メソッドを呼び出すと、データがない場合、Androidシステムは自動的にデータベースを生産します.データベースの使用が完了したら、close()メソッドを呼び出してデータベースを閉じてください.
次は単語の本プログラムの例です.フロントに単語を入力してデータベースに保存し、クエリーします.
line.xml
popup.xml
main.xml
继承SQLiteOpenHelper
package WangLi.IO.DataBaseHelper;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
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)
{
System.out.println("--------onUpdate Called--------"
+ oldVersion + "--->" + newVersion);
}
}
クエリー結果を表示するフォームpackage WangLi.IO.DataBaseHelper;
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
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.popup);
ListView listView = (ListView)findViewById(R.id.show);
Intent intent = getIntent();
// intent
Bundle data = intent.getExtras();
// Bundle
@SuppressWarnings("unchecked")
List
メインインタフェースpackage WangLi.IO.DataBaseHelper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
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;
public class Dict extends Activity {
MyDatabaseHelper dbHelper;
Button insert = null;
Button search = null;
protected ArrayList> convertCursorToList(Cursor cursor)
{
ArrayList> result =
new ArrayList>();
// Cursor
while(cursor.moveToNext())
{
// ArrayList
Map map = new HashMap();
// 2 , 3
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});
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// MyDatabaseHelper , 1,
// databases
dbHelper = new MyDatabaseHelper(this, "myDict.db3" , 1);
insert = (Button)findViewById(R.id.insert);
search = (Button)findViewById(R.id.search);
insert.setOnClickListener(new OnClickListener(){
public void onClick(View source)
{
//
String word = ((EditText)findViewById(R.id.word)).getText().toString();
String detail = ((EditText)findViewById(R.id.detail)).getText().toString();
//
insertData(dbHelper.getReadableDatabase(), word, detail);
//
Toast.makeText(Dict.this, " ", 8000).show();
}
});
search.setOnClickListener(new OnClickListener(){
public void onClick(View source)
{
//
String key = ((EditText)findViewById(R.id.key)).getText().toString();
//
Cursor cursor = dbHelper.getReadableDatabase().rawQuery(
"select * from dict where word like ? or detail like ?",
new String[]{"%" + key + "%","%" + key + "%"});
// Bundler
Bundle data = new Bundle();
data.putSerializable("data", convertCursorToList(cursor));
// Intent
Intent intent = new Intent(Dict.this, ResultActivity.class);
intent.putExtras(data);
// Activity
startActivity(intent);
}
});
}
public void onDestroy()
{
super.onDestroy();
// MyDatabaseHelper SQLiteDatabase
if(dbHelper != null)
{
dbHelper.close();
}
}
}
データベース・クエリー・ツールを使用して、レコードを挿入したばかりのことを確認します.