繁体   English   中英

为什么我没有从Android中的rawQuery方法获得任何结果

[英]Why I am not getting any result from rawQuery method in android

我正在做一个简单的SQlite Apps,我想在其中将组名保存在表中,并在用户单击添加按钮后立即在列表视图中显示它。

有谁可以帮助我为什么我不能从rawQuery结果中获取空值?

public class AddData {

public static final String TAG = DbHelper.class.getSimpleName();
public static final String DB_NAME = "Grup.db";
public static final int DB_VERSION = 1;
public static final String TABLE = "Grups";
public static final String C_ID = BaseColumns._ID;
public static final String C_CREATED_AT = "easy_ass_created_At";
public static final String C_NAME = "name";
private DbHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;

public class DbHelper extends SQLiteOpenHelper {

    // public static final String TAG = DbHelper.class.getSimpleName();
    // public static final String DB_NAME = "Grup.db";
    // public static final int DB_VERSION = 1;
    // public static final String TABLE = "Grups";
    // public static final String C_ID = BaseColumns._ID;
    // public static final String C_CREATED_AT = "easy_ass_created_At";
    // public static final String C_NAME = "name";

    public DbHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String sql = ("create table " + TABLE + " ( " + C_ID
                + " integer primary key autoincrement, " + C_NAME
                + " text not null" + ");");
        db.execSQL(sql);
        Log.d(TAG, "OnCreate sql" + sql);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists " + TABLE);
        this.onCreate(db);
        Log.d("TAG", "********On Upgrate Drop Table*****");

    }

}

public AddData(Context context) {
    ourContext = context;

}

public AddData open() throws SQLException {

    ourHelper = new DbHelper(ourContext);
    ourDatabase = ourHelper.getReadableDatabase();
    return this;
}

public void close() {
    ourHelper.close();
}

public long createEntry(String name) {
    ContentValues cv = new ContentValues();
    cv.put(C_NAME, name);
    return ourDatabase.insert(TABLE, null, cv);
}

public String getData() {

    String[] columns = new String[] { C_ID, C_NAME };
    Cursor c = ourDatabase.query(TABLE, columns, null, null, null, null,
            null);
    String result = "";
    // int iRow=c.getColumnIndex(C_ID);
    int iName = c.getColumnIndex(C_NAME);

    // for(c.moveToFirst();!c.isAfterLast();c.moveToLast()){
    for (boolean hasItem = c.moveToFirst(); hasItem; hasItem = c
            .moveToNext()) {
        result = result + "   " + c.getString(iName) + "\n";
        c.moveToNext();
    }
    c.close();
    return result;

}

public ArrayList<String> fatchData() {



    ArrayList<String> results = new ArrayList<String>();
    try {
        Cursor c = ourDatabase.rawQuery("SELECT * from Grups;", null);
        if (c != null) {
            if (c.moveToFirst()) {
                do {
                    String firstName = c.getString(c.getColumnIndex("name"));
                    results.add("Project: " + firstName);
                } while (c.moveToNext());
            }
        }
    } catch (Exception e) {

        e.printStackTrace();
    }finally {
        if (ourDatabase != null) 
            ourDatabase.execSQL("DELETE FROM Grups");
            ourDatabase.close();
    }
    return results;

}

}

尝试删除c.close()并在getData()方法中使用startManagingCursor(c) (在创建游标之后getData()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM