मेरे पास निम्न कोड है जो मेरी तालिका बनाता है। मैं इस पर डेटा सम्मिलित है कि इसएसक्यूएल क्वेरी एंड्रॉइड के साथ समस्या जहां क्लॉज
_id date recordName total
--------------------------------------
7 2011 TestMaxRecord 5
जावा कोड की तरह दिखता है:
public static final String KEY_ROWID = "_id";
public static final String KEY_DATE = "date";
public static final String KEY_TOTAL = "total";
public static final String KEY_RECORD_NAME = "recordName";
private static final String DATABASE_CREATE_RECORDS = "create table " + DATABASE_TABLE_RECORDS + " ("
+ KEY_ROWID + " integer primary key autoincrement, "
+ KEY_DATE + " text not null, "
+ KEY_RECORD_NAME + " text not null, "
+ KEY_TOTAL + " text not null);";
public Cursor getRecord(String name) throws SQLException {
return mDb.query(true, DATABASE_TABLE_RECORDS, new String[] {KEY_ROWID, KEY_DATE, KEY_RECORD_NAME, KEY_TOTAL}, KEY_RECORD_NAME + " = " + name, null, null, null, null, null);
}
यह हर बार एक अपवाद फेंकता है जहां नाम = "TestMaxRecord" (के बावजूद वहाँ में डेटा जा रहा है) निम्न त्रुटि के साथ
android.database.sqlite.SQLiteException: ऐसी कोई स्तंभ: TestMaxRecord: है, जबकि संकलन: का चयन करें DISTINCT _ id, तिथि, recordName, कुल रिकॉर्ड से कहां recordName = TestMaxRecord
जो मुझे लगता है कि यह कॉलम शीर्षक TestMaxRecord
की तलाश में है। मैं एक एंड्रॉइड नौसिखिया हूं लेकिन इस भाग को एक उदाहरण से बिल्कुल काफी कॉपी किया है (हालांकि यह int का उपयोग कर रहा था)। क्या आपकी क्वेरी पर int और स्ट्रिंग्स का उपयोग करने में कोई अंतर है?
पर गौर है कि काम: यह समाधान, आप पैरामीटर प्लेसहोल्डर का उपयोग करना चाहिए, और
selectionArgs
तर्क के माध्यम से मान पास एसक्यूएल इंजेक्शन के लिए खुला है , धन्यवाद। क्या ऐसा इसलिए है क्योंकि यह एक स्ट्रिंग है? मैंने पहले आपके लिंक में संसाधनों को देखा है और यह WHERE खंडों में सहायता नहीं करता है। जहां खंड में बहुत कम तार ... कम से कम मुझे कभी मिला है। – easycheese