「Washing Machine」を検索文字列として使用して特定のエントリをデータベースで検索し、「Washing Machine」のデータベース エントリを見つけようとすると、次のようなエラーが表示されます。
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行目):
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=" + spinnerChoice, null, null, null, null);