2017-02-06 7 views
0

私のデータベースには2つのテーブルがあります。ディストリビューションとプレイス。プレイステーブルでクエリを実行しています。rawQuery()がゼロ行を返すのはなぜですか?

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

このgetPlaceDetailsForPhonebook方法である

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を使用して、そこに私が実行していますPlaceテーブルの同じクエリ(test()メソッド内のクエリ)が正しい結果を返しました。したがって、データベースには何も問題はありません。 09: マイlogcat

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

事前にme.Thanksを助けてください:)

+0

WHERE句がないと何かが得られますか?なぜあなたの 'onCreate'は空ですか? –

+0

@CL私の問題を解決し、答えを掲載しました。とにかく返信いただきありがとうございます。 onCreateは空であるため、何か追加する必要はありません... –

答えて

0

も愚かme.iはちょうど私のデバイスから以前のdbをクリアしなければならなかったし、問題が解決されましたすぐに。プログラムで削除する方法があるかどうかを確認する必要があります。

関連する問題