Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从sqlite数据库获取所有行_Java_Android_Sqlite - Fatal编程技术网

Java 无法从sqlite数据库获取所有行

Java 无法从sqlite数据库获取所有行,java,android,sqlite,Java,Android,Sqlite,我正在开发名为Stock Manager的小应用程序。我想将所有行详细信息返回到listview中。但我只收到最后一行的详细信息 检查此数据库文件DataBaseHandler.java package com.example.stockmanager; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context;

我正在开发名为Stock Manager的小应用程序。我想将所有行详细信息返回到listview中。但我只收到最后一行的详细信息

检查此数据库文件DataBaseHandler.java

package com.example.stockmanager;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DataBaseHandler extends SQLiteOpenHelper{


    private SQLiteDatabase sql=null;
    private static String CREATE_TABLE="";

    public DataBaseHandler(Context context) 
    {
        super(context, Util.DATABASE_NAME, null, Util.DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        CREATE_TABLE = "CREATE TABLE " +Util.STOCK_TABLE + "("
                +Util.USER_ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "
                +Util.CURRENT_STOCK +" TEXT NOT NULL, "
                +Util.DATE +" TEXT NOT NULL, "
                +Util.TIME +" TEXT NOT NULL" + ")";
        db.execSQL(CREATE_TABLE);
        Log.i("Authentication", ""+CREATE_TABLE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " +Util.STOCK_TABLE);

    }

    public void insertDetails(Model m)
    {
        sql=this.getWritableDatabase();
        ContentValues cn=new ContentValues();

        cn.put(Util.CURRENT_STOCK, m.getCurrentStock().toString());
        cn.put(Util.DATE, m.getDate().toString());
        cn.put(Util.TIME, m.getTime().toString());
        long insertId=sql.insert(Util.STOCK_TABLE, null, cn);
        Log.i("new raw inserted", ""+insertId);
    }

    public List<Model> getAllDetails()
    {
        List<Model> show=new ArrayList<Model>(); 
        sql=this.getReadableDatabase();
        Cursor cursor=null;
        /*String query="SELECT * FROM " +Util.STOCK_TABLE+" ORDER BY "+Util.USER_ID+" ASC";
        cursor=sql.rawQuery(query, null);*/
        cursor=sql.query(Util.STOCK_TABLE, new String[] {Util.CURRENT_STOCK,Util.DATE,Util.TIME}, null, null, null, null, null);
        cursor.moveToFirst();
        while(!cursor.isAfterLast())
        {
            Model m=new Model();
            m.setCurrentStock(cursor.getString(0));
            m.setDate(cursor.getString(1));
            m.setTime(cursor.getString(2));

            show.add(m);
            cursor.moveToNext();
        }
        cursor.close();
        sql.close();
        return show;
    }

     public String getLastStock()
     {
         sql=this.getWritableDatabase();

            Cursor cursor;
            String q="SELECT "+Util.CURRENT_STOCK+" FROM "+Util.STOCK_TABLE+" ORDER BY " +Util.USER_ID+" DESC LIMIT 1";
            cursor=sql.rawQuery(q, null);
            String stock = null;
            if(cursor.moveToFirst())
                stock=cursor.getString(0);

        return stock;

     }
}
我的数据库

user_id current_stock    date          time
1           50         24-3-2015      1:58:22
2           100        24-3-2015      1:58:26
3           150        24-3-2015      1:58:29
4           200        24-3-2015      1:58:36
5           195        24-3-2015      1:58:41
6           245        24-3-2015      1:58:49

在适配器中,不重写方法getCount,如下所示:

@Override
public int getCount() {
    return lsadd.size();
}
并删除这些行:

    arg1.setTag(R.id.t2, viewholder.stock);
    arg1.setTag(R.id.t3, viewholder.date);
    arg1.setTag(R.id.t4, viewholder.time);

在get allDetails方法中尝试以下示例:

SQLiteDatabase db=this.getReadableDatabase();
Cursor res=db.rawQuery(“从联系人中选择*”,null);
res.moveToFirst();
while(res.isAfterLast()==false){
array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME));
res.moveToNext();

}

很抱歉,这对我没有帮助@Laurenty@user3778089,我更新我的答案,请删除解释的行仍然面临相同的问题@劳伦帮助我。。。我没有找到任何相关的解决方案@Laurenty@user3778089,add logs get get size of list,例如在Adapter的构造函数中getAllDetails方法的末尾,…很抱歉,这对我没有帮助@在这段代码中,我试图将所有行存储在一个数组列表中,但它对我有效
user_id current_stock    date          time
1           50         24-3-2015      1:58:22
2           100        24-3-2015      1:58:26
3           150        24-3-2015      1:58:29
4           200        24-3-2015      1:58:36
5           195        24-3-2015      1:58:41
6           245        24-3-2015      1:58:49
@Override
public int getCount() {
    return lsadd.size();
}
    arg1.setTag(R.id.t2, viewholder.stock);
    arg1.setTag(R.id.t3, viewholder.date);
    arg1.setTag(R.id.t4, viewholder.time);