मैं सीएसवी प्रारूप में एसडी कार्ड पर एक फाइल करने के लिए एक SQLite डेटाबेस डंप करने के लिए इस दिनचर्या का उपयोग करें:
private Boolean backupDatabaseCSV(String outFileName) {
MyLog.d(TAG, "backupDatabaseCSV");
Boolean returnCode = false;
int i = 0;
String csvHeader = "";
String csvValues = "";
for (i = 0; i < GC.CURCOND_COLUMN_NAMES.length; i++) {
if (csvHeader.length() > 0) {
csvHeader += ",";
}
csvHeader += "\"" + GC.CURCOND_COLUMN_NAMES[i] + "\"";
}
csvHeader += "\n";
MyLog.d(TAG, "header=" + csvHeader);
dbAdapter.open();
try {
File outFile = new File(outFileName);
FileWriter fileWriter = new FileWriter(outFile);
BufferedWriter out = new BufferedWriter(fileWriter);
Cursor cursor = dbAdapter.getAllRows();
if (cursor != null) {
out.write(csvHeader);
while (cursor.moveToNext()) {
csvValues = Long.toString(cursor.getLong(0)) + ",";
csvValues += Double.toString(cursor.getDouble(1))
+ ",";
csvValues += Double.toString(cursor.getDouble(2))
+ ",";
csvValues += "\"" + cursor.getString(3) + "\",";
csvValues += Double.toString(cursor.getDouble(4))
+ ",";
csvValues += Double.toString(cursor.getDouble(5))
+ ",";
csvValues += "\"" + cursor.getString(6) + "\",";
csvValues += Double.toString(cursor.getDouble(7))
+ ",";
csvValues += Double.toString(cursor.getDouble(8))
+ ",";
csvValues += Double.toString(cursor.getDouble(9))
+ "\n";
out.write(csvValues);
}
cursor.close();
}
out.close();
returnCode = true;
} catch (IOException e) {
returnCode = false;
MyLog.d(TAG, "IOException: " + e.getMessage());
}
dbAdapter.close();
return returnCode;
}
जीसी मेरी वैश्विक स्थिरांक वर्ग जो अन्य बातों के अलावा तालिका कॉलम के नाम होते है। स्तंभ नामों को सीएसवी फ़ाइल में हेडर पंक्ति बनाने के लिए उपयोग किया जाता है। GetAllRows डेटाबेस एडाप्टर में है और तालिका में सभी पंक्तियां देता है। जबकि लौटाई गई सभी पंक्तियों को डंप करता है। लंबे मूल्य अल्पविराम से अलग होते हैं और पाठ मानों को उद्धृत किया जाता है साथ ही अल्पविराम से अलग किया जाता है। MyLog.d परीक्षण मोड में Log.d करता है और उत्पादन मोड में कुछ भी नहीं करता है। dbAdapter एक वैश्विक चर के रूप में समारोह के बाहर परिभाषित किया गया है:
dbAdapter = new DatabaseAdapter(getApplicationContext());
dbAdapter गतिविधि में कई कार्यों में प्रयोग किया जाता है:
DatabaseAdapter dbAdapter = null;
यह रूप में onCreate में आरंभ नहीं हो जाता। यदि आप वैश्विक रूप से अपने डेटाबेस एडाप्टर को परिभाषित करते हैं, तो सुनिश्चित करें कि आप प्रत्येक dbAdapter.open() को dbAdapter.close() के साथ जोड़ते हैं जब भी आप इसका उपयोग करते हैं। साथ ही, आपके द्वारा खोले गए प्रत्येक कर्सर को बंद करना न भूलें।
नोट: csvValues प्रत्येक SQLite पंक्ति में दिए गए कॉलम का एक संयोजन है। SQL पंक्ति कर्सर में लौटाई गई प्रत्येक पंक्ति के लिए, CSV तालिका में csvValues को पंक्ति के रूप में लिखा जाता है।
स्रोत
2013-01-24 20:41:04