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 :)
Erhalten Sie etwas ohne die WHERE-Klausel? Und warum ist dein 'onCreate' leer? –
@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 ... –