java 查找一行_java-SQLite数据库查询仅返回一行

本文介绍了如何修正Java代码,以便从SQLite数据库表中获取所有数据。原始代码仅获取一行,解决方案是使用游标遍历所有行并将数据存储在HashMap中。同时,建议为存储列值创建一个类,以更好地组织数据。
摘要由CSDN通过智能技术生成

下面是我用来获取存储在SQLite表中的所有结果的代码.我遇到的问题是,当我知道数据库中有21行时,它仅返回一行.

public HashMap fetchResults(String TABLE_NAME, String sql) {

HashMap table = new HashMap();

if(sql == null)

sql = "";

String selectQuery = "SELECT * FROM " + TABLE_NAME + " " + sql;

SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.rawQuery(selectQuery, null);

String[] columns = null;

switch(TABLE_NAME ){

case "projects":

columns = dbTables.projectsColumns;

break;

}

// Move to first row

cursor.moveToFirst();

if (cursor.getCount() > 0) {

int n=1;

for(int i=0; i

table.put(columns[i], cursor.getString(n));

n++;

}

}

//move to the next row

cursor.moveToNext();

cursor.close();

db.close();

// return user

Log.d(TAG, "Fetching " + TABLE_NAME + " from Sqlite: " + table.toString());

return table;

}

db调用在一个片段中进行,如下所示.

HashMap projects = db.fetchResults(dbTables.TABLE_PROJECTS, null);

for (String key : projects.keySet()) {

if(key == "projectname"){

System.out.println("Key: " + key + ", Value: " + projects.get(key));

menuList.add(projects.get(key));

}

}

解决方法:

您只在那里检索一行:

// Move to first row

cursor.moveToFirst();

if (cursor.getCount() > 0) {

int n=1;

for(int i=0; i

table.put(columns[i], cursor.getString(n));

n++;

}

}

您必须迭代游标才能获得所有结果:

// Move to first row

cursor.moveToFirst();

if (cursor.getCount() > 0) {

while(cursor.moveToNext()) {

for (int i = 0; i < columns.length; i++) {

table.put(columns[i], cursor.getString(i));

}

}

}

但是您的表将列出每一行的所有列值.如果要使用带有行条目的表,请定义一个用于存储列值的类.

标签:sqlite,cursor,java,android,database

来源: https://codeday.me/bug/20191028/1950823.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值