मेरे पास कुछ एंड्रॉइड प्रोजेक्ट हैं और उनमें से अधिकतर SQLite डेटाबेस से जुड़े हुए हैं। मुझे दिलचस्पी है कि यह कुछ अच्छी कक्षा "डेटाबेसहेल्पर.क्लास" का उपयोग करने के लिए एक अच्छा प्रोग्रामिंग अभ्यास (या एक बुरा खरगोश) है जिसमें "डेटाबेस मैनिप्ल्यूशन के लिए मेरे पास सभी स्थैतिक विधिएं होंगी। उदाहरण के लिएक्या स्थिर "डेटाबेस सहायक" वर्ग का उपयोग करना ठीक है?
public static int getId(Context context, String name) {
dbInit(context);
Cursor result = db.rawQuery("SELECT some_id FROM table WHERE some_name = '" + name + "'", null);
result.moveToFirst();
int id = result.getInt(result.getColumnIndex("some_id"));
result.close();
return id;
}
जहां dbInit (संदर्भ)जब मैं मैं आसानी से उन विधि कॉल कर सकते हैं कुछ चाहिए तब
private static void dbInit(Context context) {
if (db == null) {
db = context.openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);
}
}
है (जो डेटाबेस manipluation के लिए अपने सभी स्थिर तरीकों में प्रयोग किया जाता है) साथ उदाहरण के लिए
int id = DatabaseHelper.getId(this, "Abc");
संपादित करें (ओं): क्या मुझे प्रत्येक कनेक्शन पर dbClose का उपयोग करना है या इसे प्रति-गतिविधि खोलना है और प्रति-गतिविधि बंद करना है? तो क्या मैंने इस तरह के कुछ ऊपरी कोड को बदल दिया है?
...
dbClose();
return id;
}
private static void dbClose() {
if (db != null) {
db.close();
}
}
एक पूल केवल स्क्लाइट कनेक्शन के लिए ओवरकिल है क्योंकि यह केवल 0.2ms खोलने की लागत है, इसलिए ऐसा करें लेकिन पूल –
@Dan को छोड़ दें, इसलिए "प्रारंभिक पूल बहुत आसान हो सकता है" ... –