2012-03-21 15 views
19

मैं एंड्रॉइड के लिए नया हूं और मैं SQLite के साथ प्रकार का सीआरयूडी बनाना चाहता हूं।डेटाबेस पथ प्राप्त करें

public DataBaseHelper(Context context) 
{ 
    this.context = context; 
} 

और datebase के लिए एक गेटर:

मैं एक public class DataBaseHelper जो एक निर्माता है है

public SQLiteDatabase getDataBase() { 
    if (dataBase == null) { 
     try { 
      dataBase = context.openOrCreateDatabase(DataBaseHelper.dbName, 
                Context.MODE_PRIVATE, null); 

      dataBase.execSQL("CREATE TABLE " + DataBaseHelper.accountTblName + " " + 
             "(ID integer PRIMARY KEY AUTOINCREMENT" + 
             ",name TEXT" + 
             ",address TEXT" + 
             ",password TEXT)"); 
      } 
      catch(Exception e) { 
       Log.e(context.toString(), e.getMessage()); 

       if (dataBase != null) { 
        dataBase.close(); 
       } 
      } 
    }  
    return dataBase; 
} 

अगर मैं पहली बार के लिए एक कार्यक्रम शुरू - सब कुछ ठीक हो रहा है। डेटाबेस शून्य है और मैं इसे (एक टेबल के साथ) बनाते हैं। लेकिन जब मैं अपना ऐप डेटाबेस पुनरारंभ करता हूं तो फिर शून्य होता है और तालिका नहीं बनाई जा सकती है।

मैंने एक चेकडीबी फ़ंक्शन लिखने का निर्णय लिया है, जो डेटाबेस खोलने का प्रयास करता है। लेकिन मुझे इसके लिए रास्ता कहां मिल सकता है? मैं इसे "हार्डकोड" नहीं करना चाहता हूं।

या हो सकता है कि मैं कुछ प्रकार के विरोधी पैटर्न कर रहा हूं?

उत्तर

56

आप द्वारा context.getDatabasePath(DataBaseHelper.dbName)

+1

यह एक स्ट्रिंग पथ देना है ?? मुझे पता चला कि यह फाइल लौटाता है। स्ट्रिंग कैसे प्राप्त करें? –

+4

@ Archie.bpgc 'context.getDatabasePath (DataBaseHelper.dbName) .toString;' – jmhend

+0

ठीक है। बहुत बहुत धन्यवाद –

0

मैं एप्लिकेशन भी के लिए डीबीएस पहुंच के लिए आवश्यक पथ प्राप्त कर सकते हैं। यह मेरे लिए काम करता है:

String dbFile; 
String[] dbNames = getSherlockActivity().databaseList(); // or ContextWrapper 
for (int i = 0; i < dbNames.length; i++) { 
    dbFile = getSherlockActivity().getDatabasePath(dbNames[i]).toString(); 
    Log.i(LOG_TAG, dbFile); 
} 

उम्मीद है कि यह मदद करता है! :-)

1

SQLite डेटा बेस

यहाँ

मैं पथ प्राप्त करने के लिए दो तरीके लिख रहा हूँ के पथ प्राप्त करने के लिए।

(1) कस्टम विधि

public String getDbPath(Context context,String YourDbName) 
{ 
    return context.getDatabasePath(YourDbName).getAbsolutePath(); 
} 

(2) फ़ाइल वर्ग

File path=context.getDatabasePath("YourDbName"); 
    String db_path=path.getAbsolutePath(); 
    Log.i("Path:",db_path); 

का उपयोग कर भी आप दोनों कोड देखेंगे ... तो दोनों कोड में ही है का उपयोग करते हुए, डेटाबेस पथ प्राप्त करने के लिए पहला शॉर्टकट विधि है, और यह कम मेमोरी पर दूसरे विकल्प की तुलना में है।

2

आप अपने सहायक के निर्माता के अंदर getDatabasePath विधि का उपयोग कर सकते हैं:

public class MyDatabase extends SQLiteAssetHelper { 

    private static final String DATABASE_NAME = "wl.db"; 
    private static final int DATABASE_VERSION = 1; 
    public String databasePath = "";  

    public MyDatabase(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 

     databasePath = context.getDatabasePath("wl.db").getPath(); 
    } 
संबंधित मुद्दे