2010-08-15 13 views
6

मैं इस प्रकार डेटाबेस को खोलने के लिए कोशिश कर रहा हूँ अपरिभाषित है:विधि openOrCreateDatabase (स्ट्रिंग, पूर्णांक, नल)

SQLiteDatabase myDatabase; 
myDatabase = openOrCreateDatabase("sudoku.db", Context.MODE_PRIVATE, null); 

इस कोड को ठीक काम करता है जब मैं सेवा वर्ग में इसे लागू, लेकिन जब मैं करने की कोशिश GeneraterThread वर्ग के onPostExecute eventhandler में यह लागू, को लागू करने AsyncTask, मैं निम्नलिखित त्रुटि मिलती है:

The method openOrCreateDatabase(String, int, null) is undefined for the type GeneraterThread

उत्तर

5

ऐसा लगता है कि आप कौन सी विधि नहीं है GeneraterThread उदाहरण पर openOrCreateDatabase विधि को लागू करने की कोशिश कर रहे हैं की तरह (और सेवा वर्ग विधि है)। आप शायद एक संदर्भ वस्तु के संदर्भ में पास हो सकते हैं और उस पर विधि का आह्वान कर सकते हैं। या SQLiteDatabase.openOrCreateDatabase() की स्थिर विधि का उपयोग करें।

1

अपने माता पिता के वर्ग के साथ इसका इस्तेमाल

कुछ

myService.this.openOrCreateDatabase 
5

ऐसा लगता है कि फ़ंक्शन के लिए आपके गलत सेट गलत तर्क हैं।

वहाँ SDK में इन परिभाषाओं हैं:

public static SQLiteDatabase openOrCreateDatabase (String path, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) 

public static SQLiteDatabase openOrCreateDatabase (String path, SQLiteDatabase.CursorFactory factory) 

public static SQLiteDatabase openOrCreateDatabase (File file, SQLiteDatabase.CursorFactory factory) 

लेकिन अपने उस समारोह बुला गलत है।

शायद आप openDatabase (String path, SQLiteDatabase.CursorFactory factory, int flags) पर कॉल करना चाहते थे?

इस मामले तुम सिर्फ गलत क्रम में तर्क सेट में - आप कर रहे हैं

openOrCreateDatabase("sudoku.db", Context.MODE_PRIVATE, null); //WRONG 

बजाय: http: //

openDatabase("sudoku.db", null, Context.MODE_PRIVATE); //RIGHT 
+1

मैं यहाँ की तरह ऑनलाइन उदाहरण के एक टन देखा है sree.cc/google/android/creating-sqlite-database-tables-in-android जहां openOrCreateDatabase को सौरभ वर्मा की तरह बुलाया जाता है, इसे कॉल कर रहा है। हालांकि, ऑनलाइन दस्तावेज केवल इन तीन संस्करणों को दिखाता है। मैं उलझन में हूं। – tronman

+2

मुझे पता चला कि Context http://developer.android.com/reference/android/content/Context.html के माध्यम से openOrCreateDatabase तक पहुंचने के दो अलग-अलग तरीके हैं ... openOrCreateDatabase (स्ट्रिंग नाम, int मोड, SQLiteDatabase.CursorFactory कारखाना) और SQLiteDatabase के माध्यम से http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html जो उपरोक्त विधियों का वर्णन करता है Igor का वर्णन करता है। – tronman

+2

लेकिन ध्यान दें कि SQLiteDatabase.openDatabase (स्ट्रिंग पथ, SQLiteDatabase.CursorFactory फैक्ट्री, int झंडे) में पैरामीटर "int flags" कॉन्टेक्स्ट विधि openOrCreateDatabase (स्ट्रिंग नाम, int मोड, SQLiteDatabase.CursorFactory फैक्ट्री) में "int मोड" के बराबर नहीं है। – Anke

संबंधित मुद्दे