2017-02-06 3 views
0

Meine Datenbank verfügt über zwei Tabellen.District und Place.Ich führe eine Abfrage für die Place-Tabelle aus.Warum gibt rawQuery() null Zeilen zurück?

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

Dies ist die getPlaceDetailsForPhonebook Methode

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; 

} 

Mein 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) { 

}} 

die All-Abfrage, die auf Bezirk Tabelle ausgeführt werden, werden richtig results.I Rückkehr ist mit SqliteBrower und dort ausgeführt i die gleiche Abfrage (die Abfrage innerhalb der test() -Methode) auf der Tabelle Tisch und es gab mir das richtige Ergebnis. Es ist also nichts falsch mit der Datenbank. My 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: 09: 11.938 bis 11.938 43,393/com.example.helpfinder E/MeineAnw: inside Methode row = 0

02-06 10: 09: 43,393 11938- 11938/com.example.helpfinder E/myapp: row = 0

Bitte helfen Sie sich in Verbindung im Voraus :)

+0

Erhalten Sie etwas ohne die WHERE-Klausel? Und warum ist dein 'onCreate' leer? –

+0

@CL Ich löste mein Problem und schrieb die Antwort. Danke, dass ich sie trotzdem beantwortet habe. und onCreate ist leer, weil ich nichts extra hinzufügen muss ... –

Antwort

0

gut dumm me.i hatte gerade die vorherige db von meinem Gerät zu löschen und Problem wurde gelöst sofort. Ich muss sehen, ob es eine Möglichkeit gibt, es programmgesteuert zu löschen.

Verwandte Themen