首先,对不起,我说英语不太好。我正在用eclipse开发一个Android应用程序,从数据库中获取数据时遇到问题。这是从数据库中读取数据的方法。我把这个方法放在一个名为SQLiteAdapter的类中:
public Cursor getQuestionEachLevel(long levelId)
{
return sqLiteDatabase.query(MYDATABASE_TABLE, new String[]{KEY_ROWID, KEY_ANSWER,
KEY_QUESTION, KEY_HINT, KEY_FLAG, KEY_LEVEL}, KEY_LEVEL + "=" + levelId,
null, null, null, null, null);
}
这是将调用该方法并获取数据的代码。我将此代码放在另一个类中。
int x=0;
String getId[] = null;
String getAnswer[] = null;
String getQuestion[] = null;
String getHint[] = null;
String getFlag[]= null;
String getLevel[]= null;
mySQLiteAdapter = new SQLiteAdapter(this);
mySQLiteAdapter.openToRead();
Cursor c = mySQLiteAdapter.getQuestionEachLevel(getLevelKey);
if(c.moveToFirst()){
do{
getId[x] = c.getString(0);
getAnswer[x] = c.getString(1);
getQuestion[x] = c.getString(2);
getHint[x] = c.getString(3);
getFlag[x] = c.getString(4);
getLevel[x] = c.getString(5);
x++;
}while(c.moveToNext());
}
mySQLiteAdapter.close();
我想将数据库列中的每个数据放入特定的变量中,因为我稍后会使用它。 Eclipse没有显示任何错误,但是当我尝试在手机上运行此应用程序时,应用程序在获取数据时崩溃。有人知道这有什么问题吗?
答案 0 :(得分:2)
一定要发布你的logcat。但与此同时
int x=0;
String getId[] = null;
String getAnswer[] = null;
String getQuestion[] = null;
String getHint[] = null;
String getFlag[]= null;
String getLevel[]= null;
之后
do{
getId[x] = c.getString(0);
getAnswer[x] = c.getString(1);
getQuestion[x] = c.getString(2);
getHint[x] = c.getString(3);
getFlag[x] = c.getString(4);
getLevel[x] = c.getString(5);
x++;
}while(c.moveToNext());
总是很有问题...(你的数组没有被初始化,你正试图访问它们。我建议这个改变:
int x=0;
List<String> getId = new ArrayList<String>();
List<String> getAnswer = new ArrayList<String>();
List<String>getQuestion = new ArrayList<String>();
List<String> getHint = new ArrayList<String>();
List<String>getFlag= new ArrayList<String>();
List<String>getLevel = new ArrayList<String>();
之后
do{
getId.add( c.getString(0));
getAnswer.add( c.getString(1));
getQuestion.add(c.getString(2));
getHint.add(c.getString(3));
getFlag.add(c.getString(4));
getLevel.add(c.getString(5));
x++;
}while(c.moveToNext());
答案 1 :(得分:0)
您必须在使用之前初始化所有阵列。
int x=0;
String getId[] = null;
String getAnswer[] = null;
String getQuestion[] = null;
String getHint[] = null;
String getFlag[]= null;
String getLevel[]= null;
mySQLiteAdapter = new SQLiteAdapter(this);
mySQLiteAdapter.openToRead();
Cursor c = mySQLiteAdapter.getQuestionEachLevel(getLevelKey);
if(c.moveToFirst()){
int numOfRows = c.getCount();
getId = new String[numOfRows];
getAnswer = new String[numOfRows];
getQuestion = new String[numOfRows];
getHint = new String[numOfRows];
getFlag = new String[numOfRows];
getLevel = new String[numOfRows];
do{
getId[x] = c.getString(0);
getAnswer[x] = c.getString(1);
getQuestion[x] = c.getString(2);
getHint[x] = c.getString(3);
getFlag[x] = c.getString(4);
getLevel[x] = c.getString(5);
x++;
}while(c.moveToNext());
}
mySQLiteAdapter.close();