在 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'
。希望这对你有所帮助。
我正在尝试从 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'
。希望这对你有所帮助。