I want save user's info in Internal Database
. but when click on one user for show info, show me this error :
android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
SQLiteOpenHelder code :
public class dbOpenHelper extends SQLiteOpenHelper {
public static final String dbName = "users";
public static final String tblName = "user_info";
public static final String cID = "id";
public static final String cName = "name";
public static final String cFamily = "family";
public static final String cPassword = "password";
public static final String cPhone = "phone";
public static final String cEmail = "email";
public static final String createDatabase = "CREATE TABLE " + tblName + "(" + cID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ cName + " TEXT,"
+ cFamily + " TEXT,"
+ cPassword + " TEXT,"
+ cPhone + " TEXT,"
+ cEmail + " TEXT);";
public static final String dropDatabase = "DROP TABLE IF EXIST" + tblName;
public dbOpenHelper(Context context) {
super(context, dbName, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createDatabase);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(dropDatabase);
onCreate(db);
}
}
DbHandler codes :
public class dbHandler {
private dbOpenHelper dbHelper;
private SQLiteDatabase database;
public dbHandler(Context context) {
dbHelper = new dbOpenHelper(context);
}
public void open() {
database = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public void insert(String name, String family, String password, String phone, String email) {
ContentValues contentValues = new ContentValues();
contentValues.put(dbHelper.cName, name);
contentValues.put(dbHelper.cFamily, family);
contentValues.put(dbHelper.cPassword, password);
contentValues.put(dbHelper.cPhone, phone);
contentValues.put(dbHelper.cEmail, email);
database.insert(dbHelper.tblName, dbHelper.cName, contentValues);
}
public Boolean login(String username, String password) throws SQLException {
Cursor cursor = database.rawQuery("SELECT * FROM " + dbHelper.tblName + " WHERE " + dbHelper.cName + "=? AND " +
dbHelper.cPassword + "=?", new String[]{username, password});
if (cursor != null) {
if (cursor.getCount() > 0) {
return true;
}
}
return false;
}
public String show(int position, int field) {
String order_sort_query = "SELECT * FROM " + dbHelper.tblName + " ORDER BY " + dbHelper.cID + " DESC";
Cursor cursor = database.rawQuery(order_sort_query, null);
cursor.moveToPosition(position);
String user = cursor.getString(field);
return user;
}
public String select_user(int position, int field) {
String select_user_query = "SELECT * FROM " + dbHelper.tblName + " WHERE ID = " + position;
Cursor cursor = database.rawQuery(select_user_query, null);
cursor.moveToFirst();
String user = cursor.getString(field);
return user;
}
public Integer count(){
Cursor cursor = database.query(dbHelper.tblName, null, null, null, null, null, null);
int num_count = cursor.getCount();
return num_count;
}
}
User Activity code :
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_page);
handler = new dbHandler(this);
Bundle bundle = getIntent().getExtras();
id = bundle.getInt("id_info");
user_name_tv = (TextView) findViewById(R.id.user_info_name);
user_family_tv = (TextView) findViewById(R.id.user_info_family);
user_phone_tv = (TextView) findViewById(R.id.user_phone_text);
user_email_tv = (TextView) findViewById(R.id.user_email_text);
handler.open();
user_name_tv.setText(handler.select_user(id, 1));
user_family_tv.setText(handler.select_user(id, 2));
user_phone_tv.setText(handler.select_user(id, 4));
user_email_tv.setText(handler.select_user(id, 5));
handler.close();
}
Log Cat error :
Process: com.tellfa.nikandroid.mytestdbproject, PID: 18753
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tellfa.nikandroid.mytestdbproject/com.tellfa.nikandroid.mytestdbproject.UserPage}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5349)
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:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
at com.tellfa.nikandroid.mytestdbproject.DataBase.dbHandler.select_user(dbHandler.java:75)
at com.tellfa.nikandroid.mytestdbproject.UserPage.onCreate(UserPage.java:33)
at android.app.Activity.performCreate(Activity.java:6020)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2284)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5349)
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:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
How can i fix it? tnx all <3