从SQLite android读取数据

从SQLite android读取数据,android,android-sqlite,Android,Android Sqlite,我正在使用SQLite数据库开发一个应用程序我可以存储和读取数据,但我的问题是我只能读取表中最近的插入数据,但无法读取以前的数据,我将插入值添加到表中并从表中读取值 请解决我的问题 Mycode DBHandler class public abstract class DBHandler { private int version; private String database; private String logTag; private DBGen dbGen; @Su

我正在使用SQLite数据库开发一个应用程序我可以存储和读取数据,但我的问题是我只能读取表中最近的插入数据,但无法读取以前的数据,我将插入值添加到表中并从表中读取值 请解决我的问题

 Mycode 

 DBHandler class

  public abstract class DBHandler {
private int version;
private String database;
private String logTag;

private DBGen dbGen;

@SuppressWarnings("unused")
private DBHandler(){}

public DBHandler(Context context, String database, int version, String logTag){
    this.database=database;
    this.version=version;
    this.logTag=logTag;

    dbGen = DBGen.getInstance(context, this);
}

public String getDatabase() {
    return database;
}

public void setDatabase(String database) {
    this.database = database;
}

public int getVersion() {
    return version;
}

public void setVersion(int version) {
    this.version = version;
}

public String getLogTag() {
    return logTag;
}

public void setLogTag(String logTag) {
    this.logTag = logTag;
}

public SQLiteDatabase getReadDB(){
    return dbGen.open();
}

public SQLiteDatabase getWriteDB(){
    return dbGen.open();
}

public void close(){
    try{
        dbGen.close();
    }
    catch(SQLException sqlEx){
        Log.e(logTag, "Exception while closing connection",sqlEx);
    }
}

public abstract void onCreate(SQLiteDatabase db);
public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
    }


MY read data 

  public ArrayList<UserDetailsDTO> getUserDetails(){

    Cursor cursor = null;

    try{

        String query = "SELECT * FROM " +UserDBHandler.USER_TABLE;

        cursor = myDB.rawQuery(query, null);

        if(cursor.moveToFirst()){
            List<UserDetailsDTO> comb_Off_Jobs = new   
         ArrayList<UserDetailsDTO>();

            do{
                UserDetailsDTO comb_off_job = new UserDetailsDTO();


                            comb_off_job.setUserName(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.USER_NAME)));
                comb_off_job.setPassword(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.PASSWORD)));
                comb_off_job.setConfirmPassword(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.CONFIRM_PASSWORD)));
                comb_off_job.setMobileNumber(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.USER_MOBILE_NUMBER)));

                comb_Off_Jobs.add(comb_off_job);

            }
            while(cursor.moveToNext());

            return (ArrayList<UserDetailsDTO>)comb_Off_Jobs;
        }           
    }
    catch(IllegalArgumentException e){
        e.printStackTrace();
    }
    finally{
        if(cursor!=null){
            cursor.close();
        }
    }
    return null;

}

  my insert data

  public long insertUserDetails(UserDetailsDTO userDetails) {

    ContentValues contentValues = new ContentValues();
    contentValues.put(UserDBHandler.USER_NAME, userDetails.getUserName());
    contentValues.put(UserDBHandler.PASSWORD, userDetails.getPasssword());
    contentValues.put(UserDBHandler.CONFIRM_PASSWORD, 
     userDetails.getConfirmPassword());

     contentValues.put(UserDBHandler.USER_MOBILE_NUMBER,userDetails.getMobileNumber());


    return myDB.insert(UserDBHandler.USER_TABLE, null,
            contentValues);

}
Mycode
DBHandler类
公共抽象类DBHandler{
私有int版本;
私有字符串数据库;
私有字符串日志标签;
私有DBGen-DBGen;
@抑制警告(“未使用”)
私有DBHandler(){}
公共DBHandler(上下文上下文、字符串数据库、int版本、字符串日志标记){
this.database=数据库;
这个。版本=版本;
this.logTag=logTag;
dbGen=dbGen.getInstance(上下文,this);
}
公共字符串getDatabase(){
返回数据库;
}
公共数据库(字符串数据库){
this.database=数据库;
}
public int getVersion(){
返回版本;
}
公共无效设置版本(int版本){
this.version=版本;
}
公共字符串getLogTag(){
返回日志标签;
}
公共void setLogTag(字符串logTag){
this.logTag=logTag;
}
公共SQLiteDatabase getReadDB(){
返回dbGen.open();
}
公共SQLiteDatabase getWriteDB(){
返回dbGen.open();
}
公众假期结束(){
试一试{
dbGen.close();
}
捕获(SQLException sqlEx){
Log.e(logTag,“关闭连接时异常”,sqlEx);
}
}
公共抽象void onCreate(SQLiteDatabase db);
公共摘要void onUpgrade(SQLiteDatabase db,intoldversion,intnewversion);
}
我的读取数据
公共ArrayList getUserDetails(){
游标=空;
试一试{
String query=“SELECT*FROM”+UserDBHandler.USER\u表;
cursor=myDB.rawQuery(查询,空);
if(cursor.moveToFirst()){
列出comb\u Off\u Jobs=new
ArrayList();
做{
UserDetailsDTO comb_off_job=new UserDetailsDTO();
comb_off_job.setUserName(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.USER_NAME));
comb_off_job.setPassword(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.PASSWORD));
comb_off_job.setConfirmPassword(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.CONFIRM_PASSWORD));
comb_off_job.setMobileNumber(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.USER_MOBILE_NUMBER));
comb_Off_job.add(comb_Off_job);
}
while(cursor.moveToNext());
return(ArrayList)comb_Off_作业;
}           
}
捕获(IllegalArgumentException e){
e、 printStackTrace();
}
最后{
如果(光标!=null){
cursor.close();
}
}
返回null;
}
我的插入数据
公共长插入器详细信息(UserDetailsDTO userDetails){
ContentValues ContentValues=新ContentValues();
contentValues.put(UserDBHandler.USER_NAME,userDetails.getUserName());
contentValues.put(UserDBHandler.PASSWORD,userDetails.getPassSwarm());
contentValues.put(UserDBHandler.CONFIRM_密码,
userDetails.getConfirmPassword());
contentValues.put(UserDBHandler.USER_MOBILE_NUMBER,userDetails.getMobileNumber());
返回myDB.insert(UserDBHandler.USER_表,null,
内容价值);
}
检查此情况

if (cursor.getCount() > 0) {
    cursor.moveToFirst();
    do {

    } while (cursor.moveToNext());
}
只需用这个函数替换getUserDetails函数

public ArrayList<UserDetailsDTO> getUserDetails(){

Cursor cursor = null;

try{

    String query = "SELECT * FROM " +UserDBHandler.USER_TABLE;

    cursor = myDB.rawQuery(query, null);

    if (cursor.getCount() > 0) {
    cursor.moveToFirst();
    do {

        List<UserDetailsDTO> comb_Off_Jobs = new   
     ArrayList<UserDetailsDTO>();

        do{
            UserDetailsDTO comb_off_job = new UserDetailsDTO();


                        comb_off_job.setUserName(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.USER_NAME)));
            comb_off_job.setPassword(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.PASSWORD)));
            comb_off_job.setConfirmPassword(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.CONFIRM_PASSWORD)));
            comb_off_job.setMobileNumber(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.USER_MOBILE_NUMBER)));

            comb_Off_Jobs.add(comb_off_job);

        }
        while(cursor.moveToNext());
}
        return (ArrayList<UserDetailsDTO>)comb_Off_Jobs;
    }           
}
catch(IllegalArgumentException e){
    e.printStackTrace();
}
finally{
    if(cursor!=null){
        cursor.close();
    }
}
return null;

}
public ArrayList getUserDetails(){
游标=空;
试一试{
String query=“SELECT*FROM”+UserDBHandler.USER\u表;
cursor=myDB.rawQuery(查询,空);
if(cursor.getCount()>0){
cursor.moveToFirst();
做{
列出comb\u Off\u Jobs=new
ArrayList();
做{
UserDetailsDTO comb_off_job=new UserDetailsDTO();
comb_off_job.setUserName(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.USER_NAME));
comb_off_job.setPassword(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.PASSWORD));
comb_off_job.setConfirmPassword(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.CONFIRM_PASSWORD));
comb_off_job.setMobileNumber(cursor.getString(cursor.getColumnIndexOrThrow(UserDBHandler.USER_MOBILE_NUMBER));
comb_Off_job.add(comb_Off_job);
}
while(cursor.moveToNext());
}
return(ArrayList)comb_Off_作业;
}           
}
捕获(IllegalArgumentException e){
e、 printStackTrace();
}
最后{
如果(光标!=null){
cursor.close();
}
}
返回null;
}

我希望你得到预期的结果……

选择似乎很好。你能分享一下你的插入代码吗。。您可能在某个地方意外删除/清除了该表。什么是objecte myDB?你能分享你关于这个对象的代码吗?看一下我的代码我添加了DBHandler类also@user3081942:只需检查我在回答中提到的条件,希望您得到答案。。。