java– 在android中的CursorIndexOutOfBoundsException

java– 在android中的CursorIndexOutOfBoundsException,第1张

概述我在android中使用androidstudio尝试了一个简单的注册应用程序.我正在尝试创建一个简单的数据库并在其中插入值.我收到以下错误,当我调试我的应用程序时,我无法理解.FATALEXCEPTION:mainandroid.database.CursorIndexOutOfBoundsException:Index0requested,withasizeo

我在android中使用android studio尝试了一个简单的注册应用程序.我正在尝试创建一个简单的数据库并在其中插入值.我收到以下错误,当我调试我的应用程序时,我无法理解.

FATAL EXCEPTION: main androID.database.Cursorindexoutofboundsexception: Index 0 requested, with a size of 0

任何建议将受到高度赞赏.
java代码在这里:

FunTube

获取和设置值的类

DatabaseWrapper.java

public class DatabaseWrapper extends sqliteOpenHelper {    public static final String FUNTUBE= "User";    public static final String FUNTUBE_ID = "_ID";    public static final String FUNTUBE_Uname = "_username";    public static final String FUNTUBE_EMAIL = "_email";    public static final String FUNTUBE_PASSWORD = "_password";    public static final String FUNTUBE_Fname="_fname";    public static final String FUNTUBE_Lname = "_lname";    public static final String FUNTUBE_PHONE="_phone";    public static final String FUNTUBE_COUNTRY = "_country";    public static final String FUNTUBE_GENDER = "_gender";    public static final String FUNTUBE_VIDEOPATH= "_vIDeopath";    public static final String FUNTUBE_BDAY = "_bday";    public static final String FUNTUBE_YEAR = "_year";    public static final String FUNTUBE_INTEREST = "_interest";    public static final String FUNTUBE_REliGION = "_religion";    public static final String FUNTUBE_ABOUT="_about";    public static final String FUNTUBE_QUOTE="_qoute";    public static final String FUNTUBE_JOB = "_job";    @OverrIDe    public voID onCreate(sqliteDatabase db) {        db.execsql(DATABASE_CREATE);    }    private static final String DATABASE_name = "FunTube.db";    private static final int DATABASE_VERSION = 1;    // creation sqlite statement    private static final String DATABASE_CREATE = "create table " +FUNTUBE            + "(" + FUNTUBE_ID + " integer primary key autoincrement, "            + FUNTUBE_Uname + " text not null,"            +FUNTUBE_EMAIL + " text not null,"            +FUNTUBE_PASSWORD + " text not null,"            + FUNTUBE_Fname + " text not null,"            +FUNTUBE_Lname + " text not null,"            +FUNTUBE_PHONE + " text not null,"            + FUNTUBE_COUNTRY + " text not null,"            +FUNTUBE_GENDER + " text not null,"            +FUNTUBE_VIDEOPATH + " text not null,"            + FUNTUBE_BDAY + " text not null,"            +FUNTUBE_YEAR + " text not null,"            +FUNTUBE_INTEREST + " text not null,"            + FUNTUBE_REliGION + " text not null,"            +FUNTUBE_ABOUT + " text not null,"            +FUNTUBE_QUOTE + " text not null,"            +FUNTUBE_JOB+ " text not null)";    public DatabaseWrapper(Context context) {        super(context, DATABASE_name, null, DATABASE_VERSION);    }    @OverrIDe    public voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {        if(newVersion>oldVersion) {            db.execsql("DROP table IF EXISTS " + FUNTUBE);            onCreate(db);        }    }}

FunTubeOperations

public class FunTubeOperations {    private DatabaseWrapper dbHelper;    private String[] FUNTUBE_table_ColUMNS = { DatabaseWrapper.FUNTUBE_ID, DatabaseWrapper.FUNTUBE_Uname,DatabaseWrapper.FUNTUBE_EMAIL, DatabaseWrapper.FUNTUBE_PASSWORD,DatabaseWrapper.FUNTUBE_Fname, DatabaseWrapper.FUNTUBE_Lname,DatabaseWrapper.FUNTUBE_PHONE, DatabaseWrapper.FUNTUBE_COUNTRY,DatabaseWrapper.FUNTUBE_GENDER, DatabaseWrapper.FUNTUBE_VIDEOPATH,DatabaseWrapper.FUNTUBE_BDAY, DatabaseWrapper.FUNTUBE_YEAR,DatabaseWrapper.FUNTUBE_INTEREST, DatabaseWrapper.FUNTUBE_REliGION,DatabaseWrapper.FUNTUBE_ABOUT, DatabaseWrapper.FUNTUBE_QUOTE, DatabaseWrapper.FUNTUBE_JOB};    private sqliteDatabase database;    public FunTubeOperations(Context context) {        dbHelper = new DatabaseWrapper(context);    }    public voID open() throws sqlException {        database = dbHelper.getWritableDatabase();    }    public voID close()    {        dbHelper.close();    }    public FunTube addUsers(String uname,String email,String password,String lname,String fname,String phone,String country,String gender,String vIDeopath,String bday,String year,String interest,String religion,String about,String qoute,String job) {        ContentValues values = new ContentValues();        values.put(DatabaseWrapper.FUNTUBE_Uname, uname);        values.put(DatabaseWrapper.FUNTUBE_EMAIL, email);        values.put(DatabaseWrapper.FUNTUBE_PASSWORD, password);        values.put(DatabaseWrapper.FUNTUBE_Fname, fname);        values.put(DatabaseWrapper.FUNTUBE_Lname, lname);        values.put(DatabaseWrapper.FUNTUBE_PHONE, phone);        values.put(DatabaseWrapper.FUNTUBE_COUNTRY, country);        values.put(DatabaseWrapper.FUNTUBE_GENDER, gender);        values.put(DatabaseWrapper.FUNTUBE_VIDEOPATH, vIDeopath);        values.put(DatabaseWrapper.FUNTUBE_BDAY, bday);        values.put(DatabaseWrapper.FUNTUBE_YEAR, year);        values.put(DatabaseWrapper.FUNTUBE_INTEREST, interest);        values.put(DatabaseWrapper.FUNTUBE_REliGION, religion);        values.put(DatabaseWrapper.FUNTUBE_ABOUT, about);        values.put(DatabaseWrapper.FUNTUBE_QUOTE, qoute);        values.put(DatabaseWrapper.FUNTUBE_JOB, job);        long FuntubeID = database.insert(DatabaseWrapper.FUNTUBE, null, values);        Cursor cursor = database.query(DatabaseWrapper.FUNTUBE, FUNTUBE_table_ColUMNS, DatabaseWrapper.FUNTUBE_ID + " = " + FuntubeID, null, null, null, null);        cursor.movetoFirst();        FunTube newComment = parseFunTube(cursor);        cursor.close();        return newComment;    }    private FunTube parseFunTube(Cursor cursor) {       FunTube ft = new FunTube();        ft .setID((cursor.getInt(0)));        ft .setUname(cursor.getString(1));        ft .setEmail(cursor.getString(2));        ft .setPassword(cursor.getString(3));        ft .setFname(cursor.getString(4));        ft .setLname(cursor.getString(5));        ft .setPhone(cursor.getString(6));        ft .setCountry(cursor.getString(7));        ft .setGender(cursor.getString(8));        ft .setVIDeopath(cursor.getString(9));        ft .setBday(cursor.getString(10));        ft .setYear(cursor.getString(11));        ft.setInterest(cursor.getString(12));        ft.setReligion(cursor.getString(13));        ft .setAbout(cursor.getString(14));        ft .setQuote(cursor.getString(15));        ft .setJob(cursor.getString(16));        return ft ;    }}

registration.java

public class registeration extends AppCompatActivity {    private FunTubeOperations FunTubedBOperations;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.registeration);        final AlertDialog ad = new AlertDialog.Builder(this).create();        button b1 = (button) findVIEwByID(R.ID.register);        FunTubedBOperations = new FunTubeOperations(this);        FunTubedBOperations.open();        try {            b1.setonClickListener(new VIEw.OnClickListener() {                @OverrIDe                public voID onClick(VIEw arg0) {                    EditText username = (EditText) findVIEwByID(R.ID.username);                    EditText email = (EditText) findVIEwByID(R.ID.email);                    EditText fname = (EditText) findVIEwByID(R.ID.fname);                    EditText lname = (EditText) findVIEwByID(R.ID.lname);                    EditText password = (EditText) findVIEwByID(R.ID.password);                    EditText country = (EditText) findVIEwByID(R.ID.country);                    EditText phone = (EditText) findVIEwByID(R.ID.phone);                    EditText bday = (EditText) findVIEwByID(R.ID.bday);                    EditText year = (EditText) findVIEwByID(R.ID.year);                    EditText interest = (EditText) findVIEwByID(R.ID.interest);                    EditText qoute = (EditText) findVIEwByID(R.ID.qoute);                    EditText about = (EditText) findVIEwByID(R.ID.about);                    EditText religion = (EditText) findVIEwByID(R.ID.religion);                    EditText job = (EditText) findVIEwByID(R.ID.job);                    RadioGroup rg = (RadioGroup) findVIEwByID(R.ID.fm);                    String user = username.getText().toString();                    String em = email.getText().toString();                    String fn = fname.getText().toString();                    String ln = lname.getText().toString();                    String pass = password.getText().toString();                    String co = country.getText().toString();                    String ph = phone.getText().toString();                    String bd = bday.getText().toString();                    String ye = year.getText().toString();                    String inter = interest.getText().toString();                    String q = qoute.getText().toString();                    String rel = religion.getText().toString();                    String jo = job.getText().toString();                    String ab = about.getText().toString();                    String gen = ((Radiobutton) findVIEwByID(rg.getCheckedRadiobuttonID())).getText().toString();                    if (user != null) {                        FunTube users = FunTubedBOperations.addUsers(user, em, pass, ln, fn, ph, co, gen, null, bd, ye, inter, rel, ab, q, jo);                        if (true) {                            Toast.makeText(getApplicationContext(), (String) users.getUname() + " is added successfully!!", Toast.LENGTH_LONG).show();                            Intent intent = new Intent(registeration.this, home.class);                            startActivity(intent);                            finish();                        }                    } else {                        Toast.makeText(getApplicationContext(), "Add some Data...", Toast.LENGTH_LONG).show();                    }                }            });        } catch (Exception e) {            ad.setTitle("Error!");            ad.setMessage(e.toString());        }    }    protected voID onResume() {        FunTubedBOperations.open();        super.onResume();    }    @OverrIDe    protected voID onPause() {        FunTubedBOperations.close();        super.onPause();    }}

解决方法:

它很简单你定义了列FUNTUBE_VIDEOPATH“text not null,”NOT NulL,你从这里插入一个空值

FunTube users = FunTubedBOperations.addUsers(user, em, pass, ln, fn, ph, co, gen, null, bd, ye, inter, rel, ab, q, jo);

所以你的数据没有插入数据库并返回-1所以你的表没有任何数据

现在你通过这个从数据库中获取数据了

Cursor cursor = database.query(DatabaseWrapper.FUNTUBE, FUNTUBE_table_ColUMNS, DatabaseWrapper.FUNTUBE_ID + " = " + FuntubeID, null, null, null, null);cursor.movetoFirst();

但是你得到的不是数据,因为db中没有数据

现在将值传递给vIDeopath而不是null值,然后尝试

例如.替换这一行

FunTube users = FunTubedBOperations.addUsers(user, em, pass, ln, fn, ph, co, gen, null, bd, ye, inter, rel, ab, q, jo);

FunTube users = FunTubedBOperations.addUsers(user, em, pass, ln, fn, ph, co, gen,"some value", bd, ye, inter, rel, ab, q, jo);

它会工作

如果有更多问题,请告诉我

总结

以上是内存溢出为你收集整理的java – 在android中的CursorIndexOutOfBoundsException全部内容,希望文章能够帮你解决java – 在android中的CursorIndexOutOfBoundsException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1108136.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存