E/AndroidRuntime: FATAL EXCEPTION: main
Process: home.partyfinder3, PID: 8459
java.lang.IllegalArgumentException: Cannot bind argument at index 2 because the index is out of range. The statement has 0 parameters.
at android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212)
at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:166)
at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
at home.partyfinder3.LoginActivity.onClick(LoginActivity.java:51)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Вот такой exception вылетает, когда нажимаю кнопку "Войти". Обработчик:
public void onClick(View v) {
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
db = dbHelper.getWritableDatabase();
switch (v.getId()) {
case R.id.btnLogin:
Cursor c = db.rawQuery("SELECT username FROM users WHERE username='?' AND password='?'", new String[] {username, password});
if(c.moveToFirst()) {
Toast.makeText(this, R.string.login_enjoy, Toast.LENGTH_LONG).show();
startActivity(new Intent(this, MainActivity.class).putExtra("username", username));
c.close();
} else {
Toast.makeText(this, R.string.login_error, Toast.LENGTH_LONG).show();
}
break;
case R.id.btnLinkToRegisterScreen:
startActivity(new Intent(this, RegisterActivity.class));
break;
}
dbHelper.close();
}
Где что не так?
Сделайте консоль-лог сформированного запроса к базе и попробуйте его скопировать и выполнить вручную непосредственно в интерфейсе базы данных sql. Если там запрос не отработает, то хоть будет видна реальная причина.
Уберите из текста запроса одинарные кавычки.
Продвижение своими сайтами как стратегия роста и независимости