2017-02-06 10 views
0

내 데이터베이스에는 두 개의 테이블이 있습니다. 장소 및 장소. 장소 테이블에서 쿼리를 실행 중입니다.rawQuery()가 제로 행을 반환하는 이유는 무엇입니까?

private void test(){ 
    Cursor cur = new DatabaseQuery().getPlaceDetailsForPhonebook(DatabaseHelper.getInstance(this).getMyWritableDatabase(),"hospital","District"); 
    Log.e("myapp","row = "+cur.getCount()); 
} 

public Cursor getPlaceDetailsForPhonebook(SQLiteDatabase db,String type,String DIS_NAME){ 
    String sql; 
    if (DIS_NAME.equals("District")) { 
     sql = "SELECT name,phonenumber FROM Place WHERE type = '" + type + "'"; 
    } 
    else { 
     sql = "SELECT name,phonenumber FROM Place WHERE districtname = '"+DIS_NAME+"' AND type = '"+type+"'"; 
    } 
    Log.e("myapp",sql); 
    Cursor cr = null; 
    try { 
     cr = db.rawQuery(sql, null); 
     Log.e("myapp","inside method row = "+cr.getCount()); 
    } 
    catch(Exception e){ 
     Log.e("myapp",e.getLocalizedMessage()); 
    } 
    return cr; 

} 

내 DatabaseHelper이

public class DatabaseHelper extends SQLiteOpenHelper { 

private static SQLiteDatabase myWritableDb; 
private static DatabaseHelper sInstance; 

private DatabaseHelper(Context context){ 
    super(context,"district.db",null,1); 
} 

public static synchronized DatabaseHelper getInstance(Context context) { 

    if (sInstance == null) { 
     sInstance = new DatabaseHelper(context.getApplicationContext()); 
    } 
    return sInstance; 
} 

public SQLiteDatabase getMyWritableDatabase() { 
    if ((myWritableDb == null) || (!myWritableDb.isOpen())) { 
     myWritableDb = this.getWritableDatabase(); 
    } 

    return myWritableDb; 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

}} 

올바른 results.I을 반환하는 지구 테이블에서 실행되는 모든 쿼리가 SqliteBrower 등을 사용하고 난 실행 getPlaceDetailsForPhonebook 방법을이다 동일한 쿼리 (test() 메서드 내에서 쿼리) Place 테이블에 올바른 결과를 주었다. 따라서 데이터베이스에는 아무런 문제가 없습니다. 09 : 내 로그 캣

02-06 10:09:43.393 11938-11938/com.example.helpfinder E/myapp: SELECT name,phonenumber FROM Place WHERE type = 'hospital' 

02-06 10 43.393 11938-11938/com.example.helpfinder E/MyApp를 :에있어서 내부 행 = 0

02-06 10 : 09 : 43.393 11938- 11938/com.example.helpfinder의 E/myapp와 : 행 미리 = 0

도와주세요 와요 고마워요 :)

+0

WHERE 절이 없으면 무엇이 있습니까? 그리고 왜 당신의'onCreate'는 비어 있습니까? –

+0

@CL 나는 내 문제를 해결하고 답변을 게시했습니다. 어쨌든 답장을 보내 주셔서 감사합니다. onCreate가 비어 있기 때문에 그 위에 아무것도 추가 할 필요가 없습니다 ... –

답변

0

아니라 바보 나야 그냥 내 장치에서 이전 DB를 취소했고, 문제가 해결되었다 곧. 프로그래밍 방식으로 삭제하는 방법이 있는지 확인해야합니다.