【问题标题】:why is rawQuery() returning zero row?为什么 rawQuery() 返回零行?
【发布时间】:2017-02-06 17:47:32
【问题描述】:

我的数据库有两个表。District 和 Place。我正在 Place 表上运行查询。

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;

}

我的数据库助手

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

}}

在 District 表上运行的所有查询都返回正确的结果。我正在使用 SqliteBrower,我在 Place 表上执行了相同的查询(test() 方法中的查询),它给了我正确的结果。所以数据库没有问题。 我的日志猫

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:43.393 11938-11938/com.example.helpfinder E/myapp: inside method row = 0

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

请帮助我。在此先感谢 :)

【问题讨论】:

  • 如果没有 WHERE 子句,你会得到什么吗?为什么你的onCreate 是空的?
  • @CL 我解决了我的问题并发布了答案。感谢您的回复。并且 onCreate 是空的,因为我不需要添加任何额外的东西......

标签: android sql android-cursor sqliteopenhelper


【解决方案1】:

我太傻了。我只需要从我的设备中清除以前的数据库,问题就立即解决了。我必须看看是否有办法以编程方式将其删除。

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    相关资源
    最近更新 更多