在 SQLite android java 中搜索无效

search in SQLite android java not work

我正在尝试从 sqlite 数据库中获取数据。我已经有一个 table 员工信息,我想通过员工获取员工信息 name.I 已经在数据库助手中创建了一个函数,例如这个:

public  List getEmpdat(String empname) {

        final String TABLE_NAME = "Employee";

        String selectQuery = "SELECT  * FROM Employee where EmployeeName="+empname;
        SQLiteDatabase db  = this.getReadableDatabase();
        List<String> li = new ArrayList<String>();
        Cursor cursor      = db.rawQuery(selectQuery, null);
        String[] data      = null;
       // String name =null;

        if (cursor.moveToFirst()) {
            do {
                String  name=cursor.getString(2);
                String notes=cursor.getString(3);
                String strdate=cursor.getString(4);
                if(strdate==null)
                    strdate = "0";
                String gate=cursor.getString(6);
                if(gate==null)
                    gate = "0";
                String enddate=cursor.getString(5);
                if(enddate==null)
                    enddate = "0";
                li.add(name);
                li.add(notes);
                li.add(strdate);
                li.add(enddate);
                li.add(gate);


                // get the data into array, or class variable
            } while (cursor.moveToNext());
        }
        cursor.close();
        return li;
    }

然后在搜索中调用它 activity 像这样:

  db=new DataBaseHelper(this);
        data = (GridView) findViewById(R.id.gridView);
        List<String> li = new ArrayList<String>();
        li = db.getEmpdat(editName.getText().toString());
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, li);
        dataAdapter.setDropDownViewResource(R.layout.activity_search);

        dataAdapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, li);
        data.setAdapter(dataAdapter);

但是 logcat 出现了问题,问题是 " java.lang.RuntimeException: 无法启动 activity ComponentInfo{com.example.university.newapp/com.example.university.newapp.SearchActivity}: android.database.sqlite.SQLiteException: near "=": 语法错误 (代码 1): , 编译时: SELECT * FROM Employee where EmployeeName= “ 任何人都可以为这个问题提供帮助

尝试更改发生异常的行并检查它是否有效。

String selectQuery = "SELECT  * FROM Employee where EmployeeName='"+empname+"'";

你可以在查询中使用占位符,这样,

String query = String.format("SELECT  * FROM Employee WHERE EmployeeName='%s'",empname);

你会看到'%s',它作为占位符,你的变量值将在查询时插入到占位符中。 所以,'%s' 可以用于 String 占位符,如果你想要 Digit ,你可以使用 '%d'。希望这对你有所帮助。