Java 无法从sqlite数据库获取所有行
我正在开发名为Stock Manager的小应用程序。我想将所有行详细信息返回到listview中。但我只收到最后一行的详细信息 检查此数据库文件DataBaseHandler.javaJava 无法从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;
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);