Java android-SQLite中的错误
我试图查询我的数据库以返回输入到文本框中的名称。我已经能够查看数据库中的所有项目,但我想使用文本框搜索名称。当我输入姓名并点击搜索按钮时,log cat显示一个错误,没有这样的列:john:正在编译:从详细信息中选择姓名、性别、身高、年龄、头发,其中name=john按姓名排序Java android-SQLite中的错误,java,android,android-sqlite,Java,Android,Android Sqlite,我试图查询我的数据库以返回输入到文本框中的名称。我已经能够查看数据库中的所有项目,但我想使用文本框搜索名称。当我输入姓名并点击搜索按钮时,log cat显示一个错误,没有这样的列:john:正在编译:从详细信息中选择姓名、性别、身高、年龄、头发,其中name=john按姓名排序 private void findRecords(){ EditText find = (EditText)findViewById(R.id.nameSearch); EditText name =
private void findRecords(){
EditText find = (EditText)findViewById(R.id.nameSearch);
EditText name = (EditText)findViewById(R.id.nameFound);
EditText gender = (EditText)findViewById(R.id.genderFound);
String s = find.getText().toString();
//Long l = Long.parseLong(s);
DatabaseClass hon = new DatabaseClass(this);
String returnedName = hon.getName(s);
String returnedGender = hon.getGender(s);
name.setText(returnedName);
gender.setText(returnedGender);
}
public String getName(String s) {
// TODO Auto-generated method stub
String[] columns = new String[] {NAME_COLUMN, GENDER_COLUMN, HEIGHT_COLUMN, AGE_COLUMN, HAIR_COLUMN};
Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"="+ s, null, null, null, NAME_COLUMN);
if (c != null){
c.moveToFirst();
String name = c.getString(1);
return name;
}
return null;
}
请帮忙你的专栏是什么样的数据?我想你忘了把字面上的john放在中间 您可以尝试以下方法:
SELECT name, gender, height, age, hair FROM details WHERE name='john' ORDER by name;
你的专栏是什么样的数据?我想你忘了把字面上的john放在中间 您可以尝试以下方法:
SELECT name, gender, height, age, hair FROM details WHERE name='john' ORDER by name;
试试这个:
Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"='"+ s+"'", null, null, null, NAME_COLUMN);
因为您需要“john”格式的字符串。请尝试以下操作:
Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"='"+ s+"'", null, null, null, NAME_COLUMN);
因为您需要“john”格式的字符串。替换:
Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"="+ s, null, null, null, NAME_COLUMN);
与:
替换:
Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"="+ s, null, null, null, NAME_COLUMN);
与:
如果我用字符串[]args={s}替换它,我就不能使用这些列,我需要这些列来读取data@user1642943您不替换列,它们保持原样:@user1642943:您的问题是s的值显然不是列的名称。如果希望将其作为字符串处理,则需要引用它。引用它的最好方法是让SQLite通过查询参数来完成?在修改后的查询调用中。这样,它还将处理对值中任何嵌入引号的转义data@user1642943您不替换列,它们保持原样:@user1642943:您的问题是s的值显然不是列的名称。如果希望将其作为字符串处理,则需要引用它。引用它的最好方法是让SQLite通过查询参数来完成?在修改后的查询调用中。这样,它还将处理对值中任何嵌入引号的转义。