2012-05-16 5 views
0

검색 버튼을 클릭하고 SQLite 데이터베이스에서 데이터를 검색하여 응용 프로그램에 표시하려면 어떻게해야합니까?android에 SEARCH 버튼에 데이터베이스를 연결하는 방법

내 활동 :

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; 
} 

당신은 SQLite는 안드로이드에 좀 더 자습서를 읽어

답변

0

, 당신은 그러나 당신의 일부를 이해} 조금 더 배울 수 있습니다.

당신은 아마 다음과 같이 EKaDEMActivity에서 데이터베이스 객체를 생성해야합니다

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 열의 일치하는 단어 만 표시하므로 필요에 따라 단어를 변경해야합니다. 단어를 검색 할 때마다 새로운 쓰기 가능한 데이터베이스를 얻는 것이 매우 비효율적이므로 getWritableDatabase()를 한 번 호출하고 db를 클래스 변수에 저장해야합니다. 또한 작업이 끝나면 커서를 닫거나 활동에 전달하여 자동으로 닫습니다. 행운을 빕니다!

0

데이터베이스 클래스에이 두 함수를 추가하십시오.

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(); 
     } 
    } 
} 
관련 문제