2017-03-06 28 views
0

但我能够检索字符串数据时动态创建表和选择查询在相同的方法内。无法检索一个字符串数据从动态创建并导致“索引0请求,大小为0”的sqlite table'column

动态创建表helper.classhomework(tablename,dateString);

public void classhomework(String tablename,String date){ 

    String COLUMN_ID="S.No"; 

    String COLUMN_SUBJECT1="subject1"; 

    String COLUMN_SUBJECT2="subject2"; 

    String COLUMN_SUBJECT3="subject3"; 

    String COLUMN_dATE="date"; 

    ContentValues insertValues = new ContentValues(); 
    SQLiteDatabase db = getWritableDatabase(); 
    db.execSQL("CREATE TABLE IF NOT EXISTS "+ tablename+ "(" + 
     COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
     COLUMN_SUBJECT1 + " TEXT, " + 
     COLUMN_SUBJECT2 + " TEXT, " + 
     COLUMN_SUBJECT3 + " TEXT, " + 
     COLUMN_dATE  + " TEXT " + 
     ");"); 
    insertValues.put(COLUMN_SUBJECT1,"Not updated "); 
    insertValues.put(COLUMN_SUBJECT2,"Not updated "); 
    insertValues.put(COLUMN_SUBJECT3,"Not updated "); 
    insertValues.put(COLUMN_dATE,date); 

    db.insert(tablename,null,insertValues); 
    db.close(); 
} 

调用select查询方法

String homeworkdetails=helper.gethomework(dateString,tablename,subjtxt); 

选择查询方法

public String gethomework(String date,String tablename,String subject){ 

    String COLUMN_dATE="date"; 

    SQLiteDatabase db = getWritableDatabase(); 

    String homeworkcontent = null; 
    Cursor cur=db.query(tablename,new String[]{subject},COLUMN_dATE+"=?",new        String[]{String.valueOf(date)},null,null,null,null); 
    if(cur!=null){ 
     cur.moveToFirst(); 
    homeworkcontent =cur.getString(0);//**CursorIndexOutOfBoundsException** 
    }cur.close(); 
     db.close(); 
    return homeworkcontent; 

但在此方法内创建表时返回的值。

调用更新查询成功更新

helper.updatehomework(dateString,homeworksubmt,subjectname,tabname) 

更新查询

public boolean updatehomework(String date,String homework,String subject,String table){ 
     try{ContentValues updateValues = new ContentValues(); 
     SQLiteDatabase db = getWritableDatabase(); 
     updateValues.put(subject,homework); 
     db.update(table,updateValues,"date =?",new String[]{date}); 
     return true; 

     }catch (Exception me){ 
      me.printStackTrace(); 
     }return false; 
    } 

值。

验证了所有表名的用法。

回答

0

发生此错误是因为您的光标没有行。哟必须检查大小条件。

if(cur!=null && cur..getCount() > 0) 
{ 
...... 
} 
+0

这就是我的问题。我不能从不同的方法检索值。但是当表格在选择查询方法内时,游标返回值 – arjun

+0

尝试在日志中打印游标的大小,检查它是否有数据。 –

相关问题