Java 向ListView添加SQLite数据库值
若记录存在,我想将SQLite数据库值添加到ListView,但我只从EditText获取文本 这就是我要做的 来自databaseHelper类的代码Java 向ListView添加SQLite数据库值,java,android,sqlite,Java,Android,Sqlite,若记录存在,我想将SQLite数据库值添加到ListView,但我只从EditText获取文本 这就是我要做的 来自databaseHelper类的代码 public String ifExistIn(String stationName) { String query = "SELECT stationName FROM review WHERE stationId='" + stationName + "' LIMIT 1"; try { SQLiteDat
public String ifExistIn(String stationName) {
String query = "SELECT stationName FROM review WHERE stationId='" + stationName + "' LIMIT 1";
try {
SQLiteDatabase database = getReadableDatabase();
Cursor c = database.rawQuery(query, null));
return stationName;
}
}
来自活动类的代码
public View.OnClickListener searchStation = new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
String searchString= searchText.getText().toString();
dbHelper.ifExistIn(searchString);
list.add(searchString);
arrayAdapter= new ArrayAdapter<String>(SearchAndReview.this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(arrayAdapter);
}
};
public View.OnClickListener searchStation=new View.OnClickListener(){
@凌驾
公共void onClick(视图v){
DatabaseHelper dbHelper=新的DatabaseHelper(getApplicationContext());
字符串searchString=searchText.getText().toString();
dbHelper.ifExistIn(searchString);
list.add(searchString);
arrayAdapter=新的arrayAdapter(SearchAndReview.this,android.R.layout.simple\u list\u item\u 1,list);
setAdapter(arrayAdapter);
}
};
如下更改您的方法:
public String ifExistIn(String stationName){
String query = "SELECT stationName FROM review WHERE stationId='" + stationName + "' LIMIT 1";
try{
SQLiteDatabase database = getReadableDatabase();
Cursor c = database.rawQuery(query, null))
return c.getString(c.getColumnIndex("columnName"));
}
}
您需要从光标对象中提取数据。现在返回的值与传递的值相同。这里可能有一些错误,但从我看到的情况来看,您可以尝试以下方法:
public String ifExistIn(String stationName) {
String query = "SELECT stationName FROM review WHERE stationId='" + stationName + "' LIMIT 1";
SQLiteDatabase database = getReadableDatabase();
Cursor c = database.rawQuery(query, null);
c.moveToFirst();
return c.getString(c.getColumnIndex("stationName"));
}
您必须获得光标的结果并对其进行解释,然后将其返回为String stationName
这是:
public View.OnClickListener searchStation = new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
String searchString= searchText.getText().toString();
String usethis = dbHelper.ifExistIn(searchString);
list.add(usethis);
arrayAdapter= new ArrayAdapter<String>(SearchAndReview.this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(arrayAdapter);
}
};
您没有检查
ifExistsIn()的返回值。
当我遵循此操作时,应用程序正在崩溃。很遗憾,应用程序已停止logcat中的任何操作?我们需要查看您遇到的错误,以便知道问题所在并解决问题。android.database.CursorIndexOutOfBoundsException:请求索引-1,添加了大小为0I的cur.moveToFirst(),请立即尝试。
list.add(dbHelper.ifExistsIn(searchString);