Java android从数据库类内部传递变量

Java android从数据库类内部传递变量,java,android,sqlite,sqliteopenhelper,Java,Android,Sqlite,Sqliteopenhelper,我试图将从数据库内部获得的一些值(扩展了sqliteOpenHelper)传递给另一个类。但是,我使用游标从该数据库获取数据,该数据库为其他活动提供空值 这是我的数据库: 它内部有默认值,已插入 public class DatabaseMaster extends SQLiteOpenHelper { SQLiteDatabase db; private static final String LOG = "DatabaseHelper"; // Database V

我试图将从数据库内部获得的一些值(扩展了sqliteOpenHelper)传递给另一个类。但是,我使用游标从该数据库获取数据,该数据库为其他活动提供空值

这是我的数据库: 它内部有默认值,已插入

public class DatabaseMaster extends SQLiteOpenHelper {
    SQLiteDatabase db;

    private static final String LOG = "DatabaseHelper";
    // Database Version
    private static final int DATABASE_VERSION = 1;

    // Database Name
    private static final String DATABASE_NAME = "Rates";

    // Table Names

    public static final String KEY_ER_ID = "er_id";
    public static final String KEY_ER_USEDORNEW = "Used_or_New";
    public static final String KEY_ER_TENOR = "ER_tenor";
    public static final String KEY_ER_RATE = "ER_rate";
    // Asuransi rate
    public static final String KEY_AS_ID = "as_id";
    public static final String KEY_AS_REGIONAL = "regional";
    public static final String KEY_AS_TENOR = "AS_tenor";
    public static final String KEY_AS_TLO = "TLO";
    public static final String KEY_AS_COMPREHENSIVE = "Comprehensive";
    public static final String KEY_AS_COMBINE = "Combine";

    public static final String TABLE_EFFECTIVE_RATE = "effective_rate";
    public static final String TABLE_ASURANSI_RATE = "asuransi_rate";

    public DatabaseMaster(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

        try {
            db.beginTransaction();

            db.execSQL("CREATE TABLE " + TABLE_EFFECTIVE_RATE + " ("
                    + KEY_ER_ID + " INTEGER PRIMARY KEY, " + KEY_ER_USEDORNEW
                    + " TEXT NOT NULL, " + KEY_ER_TENOR + " INTEGER,"
                    + KEY_ER_RATE + " REAL)");

            db.execSQL("CREATE TABLE " + TABLE_ASURANSI_RATE + " (" + KEY_AS_ID
                    + " INTEGER PRIMARY KEY, " + KEY_AS_REGIONAL + " INTEGER, "
                    + KEY_AS_TENOR + " INTEGER," + KEY_AS_TLO + " REAL,"
                    + KEY_AS_COMPREHENSIVE + " REAL," + KEY_AS_COMBINE
                    + " REAL)");

            // Inserts pre-defined departments
            InsertERs(db);
            insertASs(db);
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

        db.execSQL("DROP TABLE IF EXISTS " + TABLE_EFFECTIVE_RATE);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_ASURANSI_RATE);
        // db.execSQL("DROP TRIGGER IF EXISTS er_id_trigger");
        // db.execSQL("DROP TRIGGER IF EXISTS er_id_trigger22");

        // db.execSQL("DROP TRIGGER IF EXISTS as_id_trigger");
        // db.execSQL("DROP TRIGGER IF EXISTS as_id_trigger22");

        onCreate(db);

    }

    void AddERrate(EntryEffectiveRate EER) {

        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues valuesER = new ContentValues();
        valuesER.put(KEY_ER_ID, EER.getERId());
        valuesER.put(KEY_ER_USEDORNEW, EER.getERKondisi());
        valuesER.put(KEY_ER_TENOR, EER.getERTenor());
        valuesER.put(KEY_ER_RATE, EER.getERrate());
        // values.put(KEY_CREATED_AT, getDateTime());

        // insert row
        // long er_id =
        db.insert(TABLE_EFFECTIVE_RATE, null, valuesER);
        // db.close();
        // return er_id;

    }

    int getERCount() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cur = db.rawQuery("Select * from " + TABLE_EFFECTIVE_RATE, null);
        int x = cur.getCount();
        cur.close();
        return x;
    }

    Cursor getAllERates() {
        SQLiteDatabase db = this.getWritableDatabase();

        // Cursor cur=
        // db.rawQuery("Select "+colID+" as _id , "+colName+", "+colAge+" from "+employeeTable,
        // new String [] {});
        // Cursor cur= db.rawQuery("SELECT * FROM "+viewEmps,null);
        Cursor cur = db.rawQuery("Select " + KEY_ER_ID + " as _id, "
                + KEY_ER_USEDORNEW + ", " + KEY_ER_TENOR + ", " + KEY_ER_RATE
                + ", " + " from " + TABLE_EFFECTIVE_RATE, new String[] {});
        cur.close();
        return cur;

    }

    public List<EntryEffectiveRate> getAllEffectiveRates() {
        List<EntryEffectiveRate> EffectiveRates = new ArrayList<EntryEffectiveRate>();
        String selectQuery = "SELECT  * FROM " + TABLE_EFFECTIVE_RATE;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                EntryEffectiveRate ergt = new EntryEffectiveRate();
                ergt.setERId(c.getInt(c.getColumnIndex(KEY_ER_ID)));
                ergt.setERKondisi(c.getString(c
                        .getColumnIndex(KEY_ER_USEDORNEW)));
                ergt.setERTenor(c.getInt(c.getColumnIndex(KEY_ER_TENOR)));
                ergt.setERRate(c.getDouble(c.getColumnIndex(KEY_ER_RATE)));

                // add
                EffectiveRates.add(ergt);
            } while (c.moveToNext());
        }
        // db.close();
        c.close();
        return EffectiveRates;
    }

    public int updateEntryEffectiveRate(EntryEffectiveRate er) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(KEY_ER_ID, er.getERId());
        values.put(KEY_ER_USEDORNEW, er.getERKondisi());
        values.put(KEY_ER_TENOR, er.getERTenor());
        values.put(KEY_ER_RATE, er.getERrate());
        // values.put(KEY_CREATED_AT, getDateTime());

        // updating row
        return db.update(TABLE_EFFECTIVE_RATE, values, KEY_ER_ID + " = ?",
                new String[] { String.valueOf(er.getERId()) });
    }

    //
    public void deleteEntryEffectiveRate(long er_id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_EFFECTIVE_RATE, KEY_ER_ID + " = ?",
                new String[] { String.valueOf(er_id) });
    }

    void AddASrate(EntryAsuransiRate EAR) {

        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues valuesAS = new ContentValues();
        valuesAS.put(KEY_AS_ID, EAR.getASId());
        valuesAS.put(KEY_AS_REGIONAL, EAR.getASzona());
        valuesAS.put(KEY_AS_TENOR, EAR.getAStenor());
        valuesAS.put(KEY_AS_TLO, EAR.getAStlo());
        valuesAS.put(KEY_AS_COMPREHENSIVE, EAR.getAScomp());
        valuesAS.put(KEY_AS_COMBINE, EAR.getAScomb());
        // values.put(KEY_CREATED_AT, getDateTime());

        // insert row
        // long er_id =
        db.insert(TABLE_ASURANSI_RATE, null, valuesAS);
        // db.close();
        // return er_id;

    }

    Cursor getAllASrates() {
        SQLiteDatabase db = this.getWritableDatabase();

        Cursor cur = db.rawQuery("Select " + KEY_AS_ID + " as _id, "
                + KEY_AS_REGIONAL + ", " + KEY_AS_TENOR + ", " + KEY_AS_TLO
                + ", " + KEY_AS_COMPREHENSIVE + ", " + KEY_AS_COMBINE + ", "
                + " from " + TABLE_ASURANSI_RATE, new String[] {});
        cur.close();
        return cur;
    }

    int getASCount() {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cur = db.rawQuery("Select * from " + TABLE_ASURANSI_RATE, null);
        int x = cur.getCount();
        cur.close();
        return x;
    }

    public List<EntryAsuransiRate> getAllAsuransiRates() {
        List<EntryAsuransiRate> AsuransiRates = new ArrayList<EntryAsuransiRate>();
        String selectQuery = "SELECT  * FROM " + TABLE_ASURANSI_RATE;

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {

                EntryAsuransiRate asgt = new EntryAsuransiRate();
                asgt.setASId(c.getInt(c.getColumnIndex(KEY_AS_ID)));
                asgt.setASzona(c.getInt(c.getColumnIndex(KEY_AS_REGIONAL)));
                asgt.setAStenor(c.getInt(c.getColumnIndex(KEY_AS_TENOR)));
                asgt.setAStlo(c.getDouble(c.getColumnIndex(KEY_AS_TLO)));
                asgt.setAScomp(c.getDouble(c
                        .getColumnIndex(KEY_AS_COMPREHENSIVE)));
                asgt.setAScomb(c.getDouble(c.getColumnIndex(KEY_AS_COMBINE)));
                // add
                AsuransiRates.add(asgt);
            } while (c.moveToNext());
        }
        // db.close();
        c.close();
        return AsuransiRates;
    }

    public int updateEntryAsuransiRate(EntryAsuransiRate EAR) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues valuesAS = new ContentValues();
        valuesAS.put(KEY_AS_ID, EAR.getASId());
        valuesAS.put(KEY_AS_REGIONAL, EAR.getASzona());
        valuesAS.put(KEY_AS_TENOR, EAR.getAStenor());
        valuesAS.put(KEY_AS_TLO, EAR.getAStlo());
        valuesAS.put(KEY_AS_COMPREHENSIVE, EAR.getAScomp());
        valuesAS.put(KEY_AS_COMBINE, EAR.getAScomb());
        // values.put(KEY_CREATED_AT, getDateTime());

        // updating row
        return db.update(TABLE_ASURANSI_RATE, valuesAS, KEY_AS_ID + " = ?",
                new String[] { String.valueOf(EAR.getASId()) });
    }

    //
    public void deleteEntryAsuransiRate(long as_id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_ASURANSI_RATE, KEY_AS_ID + " = ?",
                new String[] { String.valueOf(as_id) });
    }

    void InsertERs(SQLiteDatabase db) {
        try {
            db.beginTransaction();
            ContentValues cv = new ContentValues();

            cv.put(KEY_ER_ID, 1);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 12);
            cv.put(KEY_ER_RATE, 12.1);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 2);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 24);
            cv.put(KEY_ER_RATE, 12.2);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 3);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 36);
            cv.put(KEY_ER_RATE, 12.3);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 4);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 48);
            cv.put(KEY_ER_RATE, 12.4);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 5);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 60);
            cv.put(KEY_ER_RATE, 12.5);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 6);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 12);
            cv.put(KEY_ER_RATE, 12.6);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 7);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 24);
            cv.put(KEY_ER_RATE, 12.7);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 8);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 36);
            cv.put(KEY_ER_RATE, 12.8);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 9);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 48);
            cv.put(KEY_ER_RATE, 12.9);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);

            cv.put(KEY_ER_ID, 10);
            cv.put(KEY_ER_USEDORNEW, "Baru");
            cv.put(KEY_ER_TENOR, 60);
            cv.put(KEY_ER_RATE, 13);
            db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);
            // db.insert(TABLE_EFFECTIVE_RATE, KEY_ER_ID, cv);
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }
        // db.close();

    }

    void insertASs(SQLiteDatabase db) {
        try {
            db.beginTransaction();

            ContentValues cv = new ContentValues();

            cv.put(KEY_AS_ID, 1);
            cv.put(KEY_AS_REGIONAL, 1);
            cv.put(KEY_AS_TENOR, 12);
            cv.put(KEY_AS_TLO, 1.00);
            cv.put(KEY_AS_COMPREHENSIVE, 2.00);
            cv.put(KEY_AS_COMBINE, 3.00);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 2);
            cv.put(KEY_AS_REGIONAL, 1);
            cv.put(KEY_AS_TENOR, 24);
            cv.put(KEY_AS_TLO, 1.01);
            cv.put(KEY_AS_COMPREHENSIVE, 2.01);
            cv.put(KEY_AS_COMBINE, 3.01);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 3);
            cv.put(KEY_AS_REGIONAL, 1);
            cv.put(KEY_AS_TENOR, 36);
            cv.put(KEY_AS_TLO, 1.02);
            cv.put(KEY_AS_COMPREHENSIVE, 2.02);
            cv.put(KEY_AS_COMBINE, 3.02);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 4);
            cv.put(KEY_AS_REGIONAL, 1);
            cv.put(KEY_AS_TENOR, 48);
            cv.put(KEY_AS_TLO, 1.03);
            cv.put(KEY_AS_COMPREHENSIVE, 2.03);
            cv.put(KEY_AS_COMBINE, 3.03);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 5);
            cv.put(KEY_AS_REGIONAL, 1);
            cv.put(KEY_AS_TENOR, 60);
            cv.put(KEY_AS_TLO, 1.04);
            cv.put(KEY_AS_COMPREHENSIVE, 2.04);
            cv.put(KEY_AS_COMBINE, 3.04);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 6);
            cv.put(KEY_AS_REGIONAL, 2);
            cv.put(KEY_AS_TENOR, 12);
            cv.put(KEY_AS_TLO, 1.05);
            cv.put(KEY_AS_COMPREHENSIVE, 2.05);
            cv.put(KEY_AS_COMBINE, 3.05);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 7);
            cv.put(KEY_AS_REGIONAL, 2);
            cv.put(KEY_AS_TENOR, 24);
            cv.put(KEY_AS_TLO, 1.06);
            cv.put(KEY_AS_COMPREHENSIVE, 2.06);
            cv.put(KEY_AS_COMBINE, 3.06);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 8);
            cv.put(KEY_AS_REGIONAL, 2);
            cv.put(KEY_AS_TENOR, 36);
            cv.put(KEY_AS_TLO, 1.07);
            cv.put(KEY_AS_COMPREHENSIVE, 2.07);
            cv.put(KEY_AS_COMBINE, 3.07);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 9);
            cv.put(KEY_AS_REGIONAL, 2);
            cv.put(KEY_AS_TENOR, 48);
            cv.put(KEY_AS_TLO, 1.08);
            cv.put(KEY_AS_COMPREHENSIVE, 2.08);
            cv.put(KEY_AS_COMBINE, 3.08);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 10);
            cv.put(KEY_AS_REGIONAL, 2);
            cv.put(KEY_AS_TENOR, 60);
            cv.put(KEY_AS_TLO, 1.09);
            cv.put(KEY_AS_COMPREHENSIVE, 2.09);
            cv.put(KEY_AS_COMBINE, 3.09);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 11);
            cv.put(KEY_AS_REGIONAL, 3);
            cv.put(KEY_AS_TENOR, 12);
            cv.put(KEY_AS_TLO, 1.10);
            cv.put(KEY_AS_COMPREHENSIVE, 2.10);
            cv.put(KEY_AS_COMBINE, 3.10);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 12);
            cv.put(KEY_AS_REGIONAL, 3);
            cv.put(KEY_AS_TENOR, 24);
            cv.put(KEY_AS_TLO, 1.11);
            cv.put(KEY_AS_COMPREHENSIVE, 2.11);
            cv.put(KEY_AS_COMBINE, 3.11);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);
            cv.put(KEY_AS_ID, 13);
            cv.put(KEY_AS_REGIONAL, 3);
            cv.put(KEY_AS_TENOR, 36);
            cv.put(KEY_AS_TLO, 1.12);
            cv.put(KEY_AS_COMPREHENSIVE, 2.12);
            cv.put(KEY_AS_COMBINE, 3.12);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 14);
            cv.put(KEY_AS_REGIONAL, 3);
            cv.put(KEY_AS_TENOR, 48);
            cv.put(KEY_AS_TLO, 1.13);
            cv.put(KEY_AS_COMPREHENSIVE, 2.13);
            cv.put(KEY_AS_COMBINE, 3.13);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            cv.put(KEY_AS_ID, 15);
            cv.put(KEY_AS_REGIONAL, 3);
            cv.put(KEY_AS_TENOR, 60);
            cv.put(KEY_AS_TLO, 1.14);
            cv.put(KEY_AS_COMPREHENSIVE, 2.14);
            cv.put(KEY_AS_COMBINE, 3.14);
            db.insert(TABLE_ASURANSI_RATE, KEY_AS_ID, cv);

            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }
        // db1.close();
    }

    public Cursor getERValues(int index) {

        String from[] = { "KEY_ER_USEDORNEW", "KEY_ER_TENOR", "KEY_ER_RATE" };
        String where = DatabaseMaster.KEY_ER_ID + "=?";
        String[] whereArgs = new String[] { index + "" };
        Cursor cursor = db.query(DatabaseMaster.TABLE_EFFECTIVE_RATE, from,
                where, whereArgs, null, null, null, null);
        return cursor;
    }

    class DataHandler extends Activity {

         public void getData(int id) {

            Cursor c = getERValues(id);

            if (c != null) {
                while (c.moveToNext()) {
                    String UorN = c.getString(c.getColumnIndex("Used_or_New"));
                    int er_t = c.getInt(c.getColumnIndex("ER_tenor"));
                    double er_r = c.getDouble(c.getColumnIndex("ER_rate"));

                    // use these strings as you want
                    Intent Person = new Intent(this, MediatorMaster.class);
                    Person.putExtra("Used_or_New", UorN);
                    Person.putExtra("ER_tenor", er_t);
                    Person.putExtra("ER_rate", er_r);
                    startActivity(Person);
                }
            }
        }
    }

    // closing database
    public void closeDB() {
        SQLiteDatabase db = this.getReadableDatabase();
        if (db != null && db.isOpen())
            db.close();
    }

    @Override
    public void onOpen(SQLiteDatabase db) {
        super.onOpen(db);
        if (!db.isReadOnly()) {
            // Enable foreign key constraints
            db.execSQL("PRAGMA foreign_keys=ON;");
        }

    }

}
编辑: 我有另一个类,它将显示多少个条目,还将显示所有数据。我创建它是为了确保数据是否真的存在

将显示的类:

public class MainActivity extends Activity {

    // Database Helper
    DatabaseMaster db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    //  SQLiteDatabase db = this.getReadaleDatabase();
        //db = new DatabaseHelper(getApplicationContext());
        db = new DatabaseMaster(getApplicationContext());


        Log.d("Effectiverate Count", " EffectiverateCount: "
                + db.getASCount());


        Log.d("Asuransirate Count", " AsuransirateCount: "
                + db.getERCount());

        // getting all ER
                Log.d("Get ER", "GEtting All ER");

                List<EntryEffectiveRate> allEffectiveRate = db.getAllEffectiveRates();
                for (EntryEffectiveRate ER : allEffectiveRate) {
                    Log.d("ER_ids", String.valueOf(ER.getERId()));
                    Log.d("ER_rates", ER.getERKondisi());
                    Log.d("ER_tenors", String.valueOf(ER.getERTenor()));
                    Log.d("ER_rates", String.valueOf(ER.getERrate()));
                }

                // getting all AS
                Log.d("Get AS", "GEtting All AS");

                List<EntryAsuransiRate> allAsuransiRate = db.getAllAsuransiRates();
                for (EntryAsuransiRate AS : allAsuransiRate) {
                    Log.d("AS_ids", String.valueOf(AS.getASId()));
                    Log.d("AS_tenors", String.valueOf(AS.getAStenor()));
                    Log.d("AS_tlos", String.valueOf(AS.getAStlo()));
                    Log.d("AS_comps", String.valueOf(AS.getAScomp()));
                    Log.d("AS_combs", String.valueOf(AS.getAScomb()));
                }



        // Don't forget to close database connection
        db.closeDB();
}}
执行/运行mainactivity时的logcat结果

04-07 14:35:11.827: D/Effectiverate Count(395):  EffectiverateCount: 15
04-07 14:35:11.837: D/Asuransirate Count(395):  AsuransirateCount: 10
04-07 14:35:11.837: D/Get ER(395): GEtting All ER
04-07 14:35:11.837: E/DatabaseHelper(395): SELECT  * FROM effective_rate
04-07 14:35:11.847: D/ER_ids(395): 1
04-07 14:35:11.867: D/ER_rates(395): Baru
04-07 14:35:11.867: D/ER_tenors(395): 12
04-07 14:35:11.890: D/ER_rates(395): 12.1
04-07 14:35:11.890: D/ER_ids(395): 2
04-07 14:35:11.890: D/ER_rates(395): Baru
04-07 14:35:11.890: D/ER_tenors(395): 24
04-07 14:35:11.890: D/ER_rates(395): 12.2
04-07 14:35:11.890: D/ER_ids(395): 3
04-07 14:35:11.890: D/ER_rates(395): Baru
04-07 14:35:11.890: D/ER_tenors(395): 36
04-07 14:35:11.890: D/ER_rates(395): 12.3
04-07 14:35:11.897: D/ER_ids(395): 4
04-07 14:35:11.897: D/ER_rates(395): Baru
04-07 14:35:11.897: D/ER_tenors(395): 48
04-07 14:35:11.897: D/ER_rates(395): 12.4
04-07 14:35:11.897: D/ER_ids(395): 5
04-07 14:35:11.897: D/ER_rates(395): Baru
04-07 14:35:11.897: D/ER_tenors(395): 60
04-07 14:35:11.897: D/ER_rates(395): 12.5
04-07 14:35:11.897: D/ER_ids(395): 6
04-07 14:35:11.897: D/ER_rates(395): Baru
04-07 14:35:11.897: D/ER_tenors(395): 12
04-07 14:35:11.897: D/ER_rates(395): 12.6
04-07 14:35:11.897: D/ER_ids(395): 7
04-07 14:35:11.934: D/ER_rates(395): Baru
04-07 14:35:11.934: D/ER_tenors(395): 24
04-07 14:35:11.937: D/ER_rates(395): 12.7
04-07 14:35:11.937: D/ER_ids(395): 8
04-07 14:35:11.937: D/ER_rates(395): Baru
04-07 14:35:11.937: D/ER_tenors(395): 36
04-07 14:35:11.937: D/ER_rates(395): 12.8
04-07 14:35:11.937: D/ER_ids(395): 9
04-07 14:35:11.937: D/ER_rates(395): Baru
04-07 14:35:11.937: D/ER_tenors(395): 48
04-07 14:35:11.937: D/ER_rates(395): 12.9
04-07 14:35:11.937: D/ER_ids(395): 10
04-07 14:35:11.937: D/ER_rates(395): Baru
04-07 14:35:11.937: D/ER_tenors(395): 60
04-07 14:35:11.937: D/ER_rates(395): 13.0
04-07 14:35:11.937: D/Get AS(395): GEtting All AS
04-07 14:35:11.937: E/DatabaseHelper(395): SELECT  * FROM asuransi_rate
04-07 14:35:11.947: D/AS_ids(395): 1
04-07 14:35:11.957: D/AS_tenors(395): 12
04-07 14:35:11.957: D/AS_tlos(395): 1.0
04-07 14:35:11.957: D/AS_comps(395): 2.0
04-07 14:35:11.957: D/AS_combs(395): 3.0
.
.
.
04-07 14:35:12.007: D/AS_ids(395): 15
04-07 14:35:12.007: D/AS_tenors(395): 60
04-07 14:35:12.047: D/AS_tlos(395): 1.14
04-07 14:35:12.047: D/AS_comps(395): 2.14
04-07 14:35:12.047: D/AS_combs(395): 3.14
04-07 14:35:16.258: W/KeyCharacterMap(395): No keyboard for id 0
04-07 14:35:16.258: W/KeyCharacterMap(395): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
04-07 14:35:54.967: D/dalvikvm(395): GC_FOR_MALLOC freed 5071 objects / 280936 bytes in 70ms
04-07 14:35:57.150: W/KeyCharacterMap(395): No keyboard for id 0
04-07 14:35:57.150: W/KeyCharacterMap(395): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
04-07 14:42:28.127: W/IInputConnectionWrapper(395): showStatusIcon on inactive InputConnection
04-07 14:42:33.598: D/dalvikvm(395): GC_EXPLICIT freed 1992 objects / 76432 bytes in 55ms
当它运行时,将显示消息“未读数据”。意味着当试图获取额外数据时,它得到了空值。我错在哪里? 我想将所有插入的数据传递给新的活动(MediatorMaster,它现在用于检查是否有额外的数据到达那里),稍后将计算这些数据。怎么做?有什么建议吗


提前感谢

您将在返回光标之前关闭它们

如果要返回游标,请在调用函数中使用完游标后将其关闭

Cursor getAllASrates() {
    SQLiteDatabase db = this.getWritableDatabase();

    Cursor cur = db.rawQuery("Select " + KEY_AS_ID + " as _id, "
            + KEY_AS_REGIONAL + ", " + KEY_AS_TENOR + ", " + KEY_AS_TLO
            + ", " + KEY_AS_COMPREHENSIVE + ", " + KEY_AS_COMBINE + ", "
            + " from " + TABLE_ASURANSI_RATE, new String[] {});

    //close the cursor in the calling function after finished with it
    //cur.close();
    return cur;
}
这个也是:

Cursor getAllERates() {
    SQLiteDatabase db = this.getWritableDatabase();

    // Cursor cur=
    // db.rawQuery("Select "+colID+" as _id , "+colName+", "+colAge+" from "+employeeTable,
    // new String [] {});
    // Cursor cur= db.rawQuery("SELECT * FROM "+viewEmps,null);
    Cursor cur = db.rawQuery("Select " + KEY_ER_ID + " as _id, "
            + KEY_ER_USEDORNEW + ", " + KEY_ER_TENOR + ", " + KEY_ER_RATE
            + ", " + " from " + TABLE_EFFECTIVE_RATE, new String[] {});
    //close the cursor in the calling function after finished with it
    //cur.close();
    return cur;

}
更新:

所以,另一段代码似乎有问题,所以我修改了它并在下面发布。尝试直接访问列,不要使用while循环,因为这个游标看起来只返回一个结果

如果“Cursor count:”日志条目的大小为零,则您的查询不会返回任何数据

这还显示了应该关闭光标的位置

class DataHandler extends Activity {

         public void getData(int id) {

            Cursor c = getERValues(id);

            Log.d(LOG, "Cursor count: " + c.getCount());

            if (c != null) {
                if (c.moveToFirst()) {
                    String UorN = c.getString(0);
                    int er_t = c.getInt(1);
                    double er_r = c.getDouble(2);

                    // use these strings as you want
                    Intent Person = new Intent(this, MediatorMaster.class);
                    Person.putExtra("Used_or_New", UorN);
                    Person.putExtra("ER_tenor", er_t);
                    Person.putExtra("ER_rate", er_r);
                    startActivity(Person);
                }
                else{
                   Log.e(LOG, "Cursor could not moveToFirst ");

                }


            }
            c.close();  //close the cursor here
        }
    }

经过几天的探索,我找到了解决办法。感谢Daniel Nugent、Dev和Prashant Bhoir帮助我解决这一问题。解决方案是将数组用作临时列表,以读取特定表中的所有数据(也可以使其读取特定列)。例如:

要从表中的列中获取值/某些值*: *这取决于插入了多少数据。数组列表将获取所有数据,如果您没有插入任何值,那么它将给出null值

public List<TheModelClass> getTheValue(String SomeValue) {
        List<TheModelClass> NameOfTheList = new ArrayList<TheModelClass>();
        String selectQuery = "SELECT  * FROM " + TABLE_ONE + " where " + KEY_COLUMN_ONE + " = ?";

        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, new String[] {SomeValue});

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                TheModelClass AnythingYouWantToNameThis = new TheModelClass();
                AnythingYouWantToNameThis.setModelValueNumberOne(c.getString(c.getColumnIndex(KEY_COLUMN_ONE)));
                // add
                NameOfTheList.add(AnythingYouWantToNameThis);
            } while (c.moveToNext());
        }
        //always close the cursor after using it cause it may cause memory leak
        c.close();
        return NameOfTheList;
    }
对于一列:

@Override
    protected void onCreate(Bundle bundle) {
        // TODO Auto-generated method stub
        super.onCreate(bundle);
        setContentView(R.layout.test);
        Bundle exploded = this.getIntent().getExtras();
        if (this.getIntent().getExtras() != null) {
            long id0 = exploded.getLong("Pencil");
            String name0 = exploded.getString("Book");
            int phoneNumber0 = exploded.getInt("Laptop");
            double etc0 = exploded.getDouble("Nuclear_BOMB");
            .
            .
            .
            long X = exploded.getLong("X");
            String Y = exploded.getString("Y");
            int Z = exploded.getInt("Z");
            double W = exploded.getDouble("W");     
            }
        else {
            Message.message(this, "unread datas");
        }}
Bundle exploded = this.getIntent().getExtras();
    if (this.getIntent().getExtras() != null) {
        String something0 = exploded.getString("AKA_47");
        String anything0 = exploded.getString("Missile");
        String whatever0 = exploded.getString("Anything");
        .
        .
        .
        String X = exploded.getString("X"); 
        }
    else {
        Message.message(this, "unread datas");
    }
如果您想知道什么是Message.Message,它是一个类。代码:

import android.content.Context;
import android.widget.Toast;

public class Message {
    public static void message(Context context, String message)
    {
        Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    }
}

那你就有了。快乐编码

未读数据意味着在回答中得到空值检查建议不用于扩展讨论;这段对话已经结束。
// Database 
    YourDatabaseClass db;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testgetdata);
        db = new YourDatabaseClass(getApplicationContext());
        List<TheModelClass> Anything = db.getValue();
        TheModelClass Value0 = Anything.get(0);
        TheModelClass Value1 = Anything.get(1);
        .
        .
        .
        TheModelClass ValueX = Anything.get(X*);

        String Value0 = Value0.getValue();

        //2nd column
        String Value1 = Value1.getValue();      

        //column X      
        String ValueX = ValueX.getValue();


        Intent person = new Intent(this, NameOfTheClassThatYouWantToHaveThisValues.class);
        Bundle backpack = new Bundle();

        backpack.putString("AKA_47", Value0);

        backpack.putString("Missile", Value1);
        .
        .
        .
        backpack.putString("Anything", ValueX);

        person.putExtras(backpack);
        setResult(RESULT_OK, person);
        startActivity(person);

            // Don't forget to close database connection
        db.closeDB();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testgetdata);

        db = new YourDatabaseClass(getApplicationContext());

        List<TheModelClass> Anything = db.getAllDataOfTheList();

        TheModelClass Value0 = Anything.get(0);
        TheModelClass Value1 = Anything.get(1);
        .
        .
        .
        TheModelClass ValueX = Anything.get(X*);
        /*Based on how many row you have, Start with row 0 (zero)
         * whenever TheModelClass Value0 = Anything.get(0); called then you will have
         * column0Value0 column01alue1 column2Value2.........columnXValueX      
         */
         long Value0FromColumn0 = Value0.getId();
        String Value1FromColumn0 = Value0.getName();
        int Value2FromColumn0 = Value0.getPhoneNumber();
        double Value3FromColumn0 = Value0.getETC();

        //2nd column
        long Value0FromColumn1 = Value1.getId();
        String Value1FromColumn1 = Value1.getName();
        int Value2FromColumn1 = Value1.getPhoneNumber();
        double Value3FromColumn1 = Value1.getETC();

        //column X
        long ValueXFromColumnX = ValueX.getId();
        String ValueXFromColumnX = ValueX.getName();
        int ValueXFromColumnX = ValueX.getPhoneNumber();
        double ValueXFromColumnX = ValueX.getETC();

        Intent person = new Intent(this, NameOfTheClassThatYouWantToHaveThisValues.class);
        Bundle backpack = new Bundle();
        backpack.putLong("Pencil", Value0FromColumn0);
        backpack.putString("Book", Value1FromColumn0);
        backpack.putInt("Laptop", Value2FromColumn);
        backpack.putDouble("Nuclear_BOMB", Value3FromColumn0);

        backpack.putLong("Spiderman", Value0FromColumn1);
        backpack.putString("IronMan", Value1FromColumn1);
        backpack.putInt("Hercules", Value2FromColumn1);
        backpack.putDouble("MasterYoda", Value3FromColumn1);
        .
        .
        .
        backpack.putLong("Monkey", ValueXFromColumnX);
        backpack.putString("Dolphin", ValueXFromColumnX);
        backpack.putInt("Alien", ValueXFromColumnX);
        backpack.putDouble("Predator", ValueXFromColumnX);

        person.putExtras(backpack);
        setResult(RESULT_OK, person);
        startActivity(person);

        // Don't forget to close database connection
        db.closeDB();
@Override
    protected void onCreate(Bundle bundle) {
        // TODO Auto-generated method stub
        super.onCreate(bundle);
        setContentView(R.layout.test);
        Bundle exploded = this.getIntent().getExtras();
        if (this.getIntent().getExtras() != null) {
            long id0 = exploded.getLong("Pencil");
            String name0 = exploded.getString("Book");
            int phoneNumber0 = exploded.getInt("Laptop");
            double etc0 = exploded.getDouble("Nuclear_BOMB");
            .
            .
            .
            long X = exploded.getLong("X");
            String Y = exploded.getString("Y");
            int Z = exploded.getInt("Z");
            double W = exploded.getDouble("W");     
            }
        else {
            Message.message(this, "unread datas");
        }}
Bundle exploded = this.getIntent().getExtras();
    if (this.getIntent().getExtras() != null) {
        String something0 = exploded.getString("AKA_47");
        String anything0 = exploded.getString("Missile");
        String whatever0 = exploded.getString("Anything");
        .
        .
        .
        String X = exploded.getString("X"); 
        }
    else {
        Message.message(this, "unread datas");
    }
import android.content.Context;
import android.widget.Toast;

public class Message {
    public static void message(Context context, String message)
    {
        Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    }
}