0

検索ボタンをクリックして SQLite データベースからデータを取得し、それをアプリに表示するにはどうすればよいですか?

マイ アクティビティ:

public class EKaDEMActivity extends Activity implements OnClickListener {

    //EditText ET;
    public static final String KEY_ROWID = "Dic_id";
    public static final String colID="_id";
    public static final String colKD="KD_word";
    public static final String colENG="ENG_word";
    public static final String colMAL="Malay_word";
    public static final String colAudio="KD_audio";

    private static final String dbName="Dictionary";
    private static final String dbTable="tbl_Dictionary";
    private static final int dbVersion = 2;

    static final String viewEmps="ViewEmps";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ImageButton button = (ImageButton)findViewById(R.id.button_one);
        button.setOnClickListener(this);

    }
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub  


        EditText ET = (EditText) findViewById(R.id.AutoTextBox);
        ET = (EditText) findViewById(R.id.AutoTextBox);

        String s = ET.getText().toString();
        TextView TV = (TextView)findViewById(R.id.DefTextView);
        TV.setText("Welcome Using Kadazandusun-English-Malay Mobile Dictionary Application");
        boolean r = s.contentEquals("dog");
        if (r == true)
        {
            String str = "  M: Anging \n\n" + "  KD: Tasu ";
            TextView text = (TextView)findViewById(R.id.DefTextView);
            text.setText(str);
        }
        else
        {
            TV.setText("   Word not found");

        }               
    }


}

これは私の Database.java です

public static final String KEY_ROWID = "Dic_id";
public static final String colID="_id";
public static final String colKD="KD_word";
public static final String colENG="ENG_word";
public static final String colMAL="Malay_word";
public static final String colAudio="KD_audio";

private static final String dbName="Dictionary";
private static final String dbTable="tbl_Dictionary";
private static final int dbVersion = 1;

static final String viewEmps="ViewEmps";

public Database(Context context, String name, CursorFactory factory,
        int version) {
    super(context, dbName, null, dbVersion);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL("CREATE TABLE " + dbTable + " (" +
            KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            colKD + " TEXT NOT NULL, " +
            colENG + " TEXT NOT NULL, " +
            colMAL + " TEXT NOT NULL, );");

    db.execSQL("CREATE VIEW "+viewEmps+
            " AS SELECT "+dbTable+"."+colID+" AS _id,"+
            " "+dbTable+"."+colKD+","+
            " "+dbTable+"."+colENG+","+
            " "+dbTable+"."+colMAL+""+
            " FROM "+dbTable
            );
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF EXISTS "+ dbTable);
    onCreate(db);
}

 void AddWord(Word wrd)
 {


     SQLiteDatabase db= this.getWritableDatabase();


    ContentValues cv=new ContentValues();

    cv.put(colKD, wrd.getKD());
    cv.put(colENG, wrd.getENG());
    cv.put(colMAL, wrd.getMAL());
    //cv.put(colDept,2);

    db.insert(dbTable, colKD, cv);
    db.close();


}

 public int UpdateWrd(Word wrd)
 {
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues cv=new ContentValues();
    cv.put(colKD, wrd.getKD());
    cv.put(colENG, wrd.getENG());
    cv.put(colMAL, wrd.getMAL());
    return db.update(dbTable, cv, colID+"=?", new String []{String.valueOf(wrd.getID())});

 }

 public void DeleteWrd(Word wrd)
 {
     SQLiteDatabase db=this.getWritableDatabase();
     db.delete(dbTable,colID+"=?", new String [] {String.valueOf(wrd.getID())});
     db.close();

 }

Cursor getWord()
 {
     SQLiteDatabase db=this.getWritableDatabase();

     Cursor cur= db.rawQuery("SELECT * FROM "+viewEmps,null);
     return cur;
 }

}

4

2 に答える 2

0

これら 2 つの関数をデータベース クラスに追加します。

public Cursor searchall()throws Exception// For searching all record 
{
    return db.rawQuery("Select * from info ORDER BY regno ",null);
}

public Cursor search(String regno)throws Exception // for searching record with where clause
{
    return db.rawQuery("Select * from info where regno='"+regno+"'",null);
}

このコードを検索ボタンに追加します

btnreg.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) 
{
    try 
    {
    String num = regno.getText().toString();
        dba.open();
        cursor = dba.search(num);
        if (cursor.moveToFirst()) 
        {
            do 
            {
                regno.setText(cursor.getString(0));
                name.setText(cursor.getString(1));
                fname.setText(cursor.getString(2));
                age.setText(cursor.getString(3));
                city.setText(cursor.getString(4));
            }
            while (cursor.moveToNext());
            dba.close();
        }
    }
}
于 2012-05-16T04:47:49.200 に答える
0

SQLite と Android のチュートリアルをさらに読む必要があります。一部は理解していますが、もう少し詳しく学ぶことができます。

おそらく次のように、EKaDEMActivity で Database オブジェクトを作成する必要があります。

Database database;
...

onCreate() {
    ...
    database = new Database(this);
}

これを置き換えます:

boolean r = s.contentEquals("dog");
if (r == true)

次のようなもので:

Cursor cursor = database.getWord(s);
if(cursor.moveToNext()) {
    ...
    text.setText(cursor.getString(cursor.getColumnIndex(colKD)));

getWords() では:

Cursor getWord(String word) {
     SQLiteDatabase db=this.getWritableDatabase();

     return db.rawQuery("SELECT * FROM "+viewEmps + " WHERE " + colENG + "=?", new String[] { word });
}

これは英単語のみを検索し、KD 列から一致する単語を表示します。必要に応じて変更する必要があります。単語を検索するたびに新しい書き込み可能なデータベースを取得するのは非常に非効率的であることを理解してください。また、完了したらカーソルを閉じるか、アクティビティに渡して自動的に閉じるようにする必要があります。幸運を!

于 2012-05-16T03:50:35.270 に答える