0
public class recordd extends Activity{
Button b;
int count;
String date;
Record record;
SQLiteDatabase db;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.record);
int calo =getIntent().getIntExtra("cal", 0);
TextView TEXT =(TextView)findViewById(R.id.record);
record= new Record(this);
db= record.getWritableDatabase();
db.execSQL("INSERT INTO tab VALUES (null, 'calo' ,null);");
Cursor cursor = db.rawQuery("SELECT SUM(cal) FROM tab ", null);
while(cursor.moveToNext()){
int addr = cursor.getInt(0);
String addrrr = Integer.toString(addr);
String abc = cursor.getString(2);
}
我從上一次活動中獲得'calo'。然後將該數字放到名稱爲tab的sql表中。然後製作一個遊標來加總具有卡洛信息的cal。 但有一個問題。確保光標在從中訪問數據前正確初始化。 sql android
「:java.lang.IllegalStateException:由造成無法從CursorWindow逐行讀取0,列 2確保光標從它訪問數據之前正確初始化 。」
這是表格創建的更多信息。
public class Record extends SQLiteOpenHelper {
static final String DATABASE_NAME = "mydb.db";
static final int DATABASE_VERSION = 1;
public Record(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE tab (_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+"cal INTEGER, timestamp DATE DEFAULT (datetime('now','localtime')));");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS tab;");
onCreate(db);
}
}
我已經甩了好幾天
基於'SQL'查詢,遊標將只包含一行,結果該行只有一列。問題在於你試圖獲取不存在的第三列'cursor.getString(2);'。 – Titus
我忘記了問題線。根據日誌,String abc = cursor.getString(2);有這個問題「引起:java.lang.IllegalStateException:無法從CursorWindow讀取第0行,第2列。確保Cursor在從中訪問數據之前正確初始化。」 –
謝謝titus。那麼我怎麼才能從sql表中獲得總和...... –