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'が表示されます。その名前をタブである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'クエリに基づいて、カーソルは結果として1つの行のみを含み、この行は1つの列しか持ちません。問題は、存在しない3列目の 'cursor.getString(2);'を取得しようとしていることです。 – Titus
私は問題の行を忘れてしまった。ログによると、文字列abc = cursor.getString(2);この問題が発生しました:原因:java.lang.IllegalStateException:行0、列2をCursorWindowから読み取れませんでした。カーソルがデータにアクセスする前に正しく初期化されていることを確認してください。 –
に感謝します。どのように私はSQLテーブルから合計を得ることができます.... –