2016-03-19 18 views
0

üzerinde 0'dan büyük bir boyutu ile korkunç İngilizce'm için özür dilerim.CursorIndexOutOfBoundsException: Dizin 0 istediğim, INSERT/SELECT

Ben robot dünyasına yeniyim ve şimdi sqlite db ile bu kadar sorun var:

ben bu kodu çalıştırmak için deneyin: o int id = Integer.parseInt(cursor.getString(0)); geldiklerinde

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); 
} 

programı the android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 oluşturmak

Gerçekten neden istisna oluşturduğuna dair bir fikrim yok, sorgu boş olamaz çünkü bu değeri INSERT sorgusuyla üç satır ekliyorum.

SQLite Browser'da bu 3 sorgumu yürütürsem, döndürülen kayıt doğrudur.

Herkes bana yardım edebilir mi?

çağırma yöntemi:) (/) (açık yakın

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();' 

Tanım: openHelper arasında

/** 
* Open the database connection. 
*/ 
public void open() { 
    this.database = openHelper.getWritableDatabase(); 
} 

/** 
* Close the database connection. 
*/ 
public void close() { 
    if (database != null) { 
     this.database.close(); 
    } 
} 

Tanım:

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); 
} 

cevap

0

ok I çözüldü,

veritabanında INSERT/UPDATE sorgusu kullandığımda ase .execSQL(string)'u ve rawQuery(string, ...)

'u kullanmam gerekiyor