Java 有没有一种方法可以使用android sqlite游标从列数未知的表中选择*
我试图从一个表中选择所有列,并将所有行返回到一个游标中,然后在游标中循环以获取列,并使用列名从每个列中获取值。然后将列名及其值放入JSONObject中。但我总是得到粗略的IndexOutOfBoundException。是否有一种方法可以选择未知数量的列和行,并将它们映射到一个键值对中。 下面是我的代码Java 有没有一种方法可以使用android sqlite游标从列数未知的表中选择*,java,android,json,sqlite,android-cursor,Java,Android,Json,Sqlite,Android Cursor,我试图从一个表中选择所有列,并将所有行返回到一个游标中,然后在游标中循环以获取列,并使用列名从每个列中获取值。然后将列名及其值放入JSONObject中。但我总是得到粗略的IndexOutOfBoundException。是否有一种方法可以选择未知数量的列和行,并将它们映射到一个键值对中。 下面是我的代码 public JSONObject getAllCompanies() { JSONObject response = new JSONObject(); try {
public JSONObject getAllCompanies() {
JSONObject response = new JSONObject();
try {
SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase();
JSONArray dataArray = new JSONArray();
JSONObject dataObject = new JSONObject();
Cursor companyCursor = sqLiteDatabase.rawQuery("SELECT * FROM COMPANY", null);
if (companyCursor.moveToFirst()) {
do {
String column = "";
String value = "";
for (int m = 0; m < companyCursor.getColumnCount(); m++) {
column = companyCursor.getColumnName(m);
value = companyCursor.getString(companyCursor.getColumnIndex(value));
Log.i("COLUMN", column + " COLUMN VALUE: " + value);
dataArray.put(new JSONObject()
.put(column, value));
}
}
while (companyCursor.moveToNext());
// dataArray.put(dataObject);
response.put("success", true);
response.put("statuscode", 200);
response.put("payload", dataArray);
}
} catch (JSONException e) {
e.printStackTrace();
}
dbHelper.close();
return response;
}
公共JSONObject GetAllCompanys(){
JSONObject响应=新建JSONObject();
试一试{
SQLiteDatabase SQLiteDatabase=dbHelper.getWritableDatabase();
JSONArray dataArray=新的JSONArray();
JSONObject dataObject=新的JSONObject();
游标companyCursor=sqLiteDatabase.rawQuery(“选择*来自公司”,null);
if(companyCursor.moveToFirst()){
做{
字符串列=”;
字符串值=”;
for(int m=0;mgetColumnIndex(value)
withvalue=”“
返回-1,该索引无效。由于在m
中已经有索引,因此可以使用
value = companyCursor.getString(m);
方法
getColumnIndex()
需要列的名称作为参数。列的名称存储在变量
列中,而不是值中
改为:
value = companyCursor.getString(companyCursor.getColumnIndex(column));
谢谢,我修好了。非常感谢
value = companyCursor.getString(companyCursor.getColumnIndex(column));