Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向ListView添加SQLite数据库值_Java_Android_Sqlite - Fatal编程技术网

Java 向ListView添加SQLite数据库值

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

若记录存在,我想将SQLite数据库值添加到ListView,但我只从EditText获取文本

这就是我要做的

来自databaseHelper类的代码

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);