
我在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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)