最初に私の恐ろしい英語を残念に思っています。CursorIndexOutOfBoundsException:0が要求され、INSERT/SELECTで0のサイズが指定されています
私はアンドロイドの世界に新たなんだと今私はsqliteのDBでそんなに問題がある:
私はこのコードを実行しようとすると:
public void signInOnDB(String name, String surname, String username, String password, String secretQuestion,
String secretAnswer, int g, int m, int a, String regione){
String data = DateTime.setData(g, m, a);
secretAnswer = secretAnswer.toLowerCase();
database.rawQuery("INSERT INTO credenziali (userID, username, password, secretQuestion, secretAnswer) VALUES (null,'" + username + "','" + password + "','" + secretQuestion + "','" +
secretAnswer + "');", null);
Cursor cursor = database.rawQuery("SELECT userID FROM credenziali WHERE username =='"+ username + "';", null);
cursor.moveToFirst();
int id = Integer.parseInt(cursor.getString(0));
cursor.close();
database.rawQuery("INSERT INTO utenti VALUES (" + id + ",'" + name + "','" + surname + "','" + regione + "','" + data + "');", null);
}
彼はint id = Integer.parseInt(cursor.getString(0));
に到着したときにプログラムがthe android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
を生成
私は実際に例外を生成する理由がわかりません。INSERTクエリでその値を3行挿入するため、クエリはnullにできません。
SQLite Browserで3つのクエリを実行すると、返されるレコードは正しいです。
誰でも手伝ってもらえますか?
呼び出す方法:)(/)(オープンクローズの
databaseAccess = DatabaseAccess.getInstance(this);
databaseAccess.open();
databaseAccess.signInOnDB(insert_name.getText().toString(), insert_surname.getText().toString(),
insert_username.getText().toString(), insert_password1.getText().toString(), insert_secretQuestion.getText().toString(),
insert_secretAnswer.getText().toString(), g, m, a, regionResidence);
databaseAccess.close();'
定義:openHelperの
/**
* Open the database connection.
*/
public void open() {
this.database = openHelper.getWritableDatabase();
}
/**
* Close the database connection.
*/
public void close() {
if (database != null) {
this.database.close();
}
}
定義:
public class DatabaseOpenHelper extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "GDB.db";
private static final int DATABASE_VERSION = 1;
public DatabaseOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}