Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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 android-SQLite中的错误_Java_Android_Android Sqlite - Fatal编程技术网

Java android-SQLite中的错误

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 =

我试图查询我的数据库以返回输入到文本框中的名称。我已经能够查看数据库中的所有项目,但我想使用文本框搜索名称。当我输入姓名并点击搜索按钮时,log cat显示一个错误,没有这样的列:john:正在编译:从详细信息中选择姓名、性别、身高、年龄、头发,其中name=john按姓名排序

 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通过查询参数来完成?在修改后的查询调用中。这样,它还将处理对值中任何嵌入引号的转义。