Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 在数据库中搜索条目时出现语法错误_Java_Android_Database_Eclipse_Sqlite - Fatal编程技术网

Java 在数据库中搜索条目时出现语法错误

Java 在数据库中搜索条目时出现语法错误,java,android,database,eclipse,sqlite,Java,Android,Database,Eclipse,Sqlite,当我尝试使用“洗衣机”作为搜索字符串来搜索数据库中的特定条目,以尝试查找“洗衣机”的数据库条目时,会出现一个错误,提示: 04-16 21:43:28.951: E/AndroidRuntime(545): FATAL EXCEPTION: main 04-16 21:43:28.951: E/AndroidRuntime(545): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lukeorp

当我尝试使用“洗衣机”作为搜索字符串来搜索数据库中的特定条目,以尝试查找“洗衣机”的数据库条目时,会出现一个错误,提示:

04-16 21:43:28.951: E/AndroidRuntime(545): FATAL EXCEPTION: main
04-16 21:43:28.951: E/AndroidRuntime(545): java.lang.RuntimeException: Unable to start   activity  ComponentInfo{com.lukeorpin.theappliancekeeper/com.lukeorpin.theappliancekeeper.EntryStatis tics}: android.database.sqlite.SQLiteException: near "Machine": syntax error: , while compiling: SELECT _id, appliance_name, appliance_wattage, energy_rates FROM ApplianceDetails WHERE appliance_name=Washing Machine
更具体地说是:

at com.lukeorpin.theappliancekeeper.Database.getWattage(Database.java:122)
04-16 21:43:28.951: E/AndroidRuntime(545):  at com.lukeorpin.theappliancekeeper.EntryStatistics.onCreate(EntryStatistics.java:47)
以下是数据库搜索查询的代码:

public String getWattage(String spinnerChoice) {
    // TODO Auto-generated method stub
    String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_WATTAGE, KEY_ENERGY};
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=" + spinnerChoice, null, null, null, null);
    if (c != null){
        c.moveToFirst();
        String wattage = c.getString(2);
        return wattage;
    }
    return null;
}

public String getEnergyRate(String spinnerChoice) {
    // TODO Auto-generated method stub
    String[] columns = new String[] { KEY_ROWID, KEY_NAME, KEY_WATTAGE, KEY_ENERGY};
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=" + spinnerChoice, null, null, null, null);
    if (c != null){
        c.moveToFirst();
        String energyRate = c.getString(3);
        return energyRate;
    }
    return null;
}
这是创建方法的原始类:

final String spinnerChoice = getIntent().getStringExtra("Name");
    if(spinnerChoice==null){ 
        return;
    } 

Database data = new Database(this);
    data.open();
    String returnedWattage = data.getWattage(spinnerChoice); 
    String returnedEnergyRate = data.getEnergyRate(spinnerChoice);
    data.close();
有人知道为什么会出现此错误消息吗?谢谢

编辑:这是错误也指向的代码行(第122行):


给出错误消息后,似乎没有引号表示
appliance\u name
值比较的字符串。应该是

WHERE appliance_name = 'Washing Machine'
我不熟悉api,但您可以尝试将第122行更改为

Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "='" + spinnerChoice + "'", null, null, null, null);

您需要将搜索字符串用单引号括起来(在您的SQL查询中)。

请显示导致错误的实际SQL命令字符串好吗?我已经将其放在原始帖子的末尾,谢谢。我希望您已经进行了一些调试,并可以将原始字符串值拉出来让我们查看:)是的,它现在正在工作!非常感谢,这是单引号完成的:)
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "='" + spinnerChoice + "'", null, null, null, null);