Używam poniższego kodu do pobrania rekordu sqlite w mojej aplikacji na Androida. Ten kod pobiera wartości liczbowe, ale nie pobiera wartości alfanumerycznych.
Np.: gdy „tempno” wynosi 2, rekord jest pobierany, ale nie jest pobierany, gdy „tempno” wynosi 2A.
Wszystkie używane przeze mnie zmienne są typu danych „String”.
public Map<String, Object> getDetails(String tempno) throws SQLException{
Map<String, Object> map = new HashMap<String, Object>();
Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {SOURCE, DESTINATION, ROUTELENGTH, NOTE}, ROUTENO + "=" + tempno, null, null, null, null, null);
Dzwonię poniżej kodu z innej klasy.
Daj mi znać, gdzie idę źle.
Map<String, Object> temp = dbAdapt.getDetails(tempno);
Poniżej znajduje się błąd w Logcat
09-26 18:42:52.108: E/AndroidRuntime(2363): android.database.sqlite.SQLiteException: unrecognized token: "2A": , while compiling: SELECT DISTINCT source, destination, routelength, note FROM route WHERE routeno=2A
2 odpowiedzi
Zmień to do tego:
public Map<String, Object> getDetails(String tempno) throws SQLException{
Map<String, Object> map = new HashMap<String, Object>();
Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {SOURCE, DESTINATION, ROUTELENGTH, NOTE}, ROUTENO + "='" + tempno+"'", null, null, null, null, null);
//ROUTENO + "='" + tempno+"'",
To jest szybkie i brudne rozwiązanie, ale działa. Nie jest to typowy sposób umieszczania wartości w ciągu sql.
Użyj podstawienia parametru query
zamiast własnego:
public Map<String, Object> getDetails(String tempno) throws SQLException{
Map<String, Object> map = new HashMap<String, Object>();
Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {SOURCE, DESTINATION, ROUTELENGTH, NOTE}, ROUTENO + "= ?", new String[] { tempno }, null, null, null, null);
Podobne pytania
Nowe pytania
android
Android to mobilny system operacyjny Google, używany do programowania lub tworzenia urządzeń cyfrowych (smartfony, tablety, samochody, telewizory, Wear, Glass, IoT). W przypadku tematów związanych z Androidem użyj tagów specyficznych dla Androida, takich jak android-intent, android-activity, android-adapter itp. W przypadku pytań innych niż programowanie lub programowanie, ale związanych ze strukturą Androida, użyj tego linku: https: // android.stackexchange.com.