Soru & Cevap

Sqlite sdCard ...

09.09.2014 - 11:55

Merhaba Arkadaşlar.. Geliştirdiğim bir uygulama içerisinde sqlite veritabanı kullanıyorum. Veri çekmek yada saklamak ile ilgili bir sıkıntım yok. Yaşadığım tek sıkıntı veritabanının yeri.. 

Uygulamada manifest dosyasında  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ile sdcard'a yazma yetkisini uygulamama verdim.. 

bir SQLiteOpenHelper sınıfından extend ettiğim db_DrnDB adlı bir helper ile aşağıdaki şekilde datatmı oluşturuyorum. sdcard içerisine gerekli klasörler açılıyor ama bu klasörler boş. internal storage de bu klasörler bile yok.. 

public db_DrnDb(Context context) {
        //super(context, dbname,  null, surum);
        super(context, context.getExternalFilesDir(null).getAbsolutePath() + "/" + dbname, null, surum);
        myContext=context;
        myAppDB=getWritableDatabase();
    }

 

Anlayacağınız data dosyası kayıp.. Bunu yapmak istememin sebebi cihazda oluşacak bir sıkıntı sonucunda bu data dosyasını alıp sistemi yeni bir cihaza kurup çalışmaya kaldığım yerden devam etmeliyim.. Şimdiden yardımlarınız için teşekkür ederim.. 

13 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-21471-1433938289.png
waycell
09.09.2014 - 07:18

haklısınız zaten so şekilde ama sıkıntı aktarılmamış kayıtlarda

 

picture-21471-1433938289.png
waycell
09.09.2014 - 01:30

sağolun engin bey.. bakalım nasıl olacak.. sürekli veri güncelleyen bir sistem yaptım ve veriler önemli kaybolmaması gerekiyor... üzüldüm bu duruma

 

engin yolal
09.09.2014 - 01:35
yine de söylediğin türden bir yapı konusunda araştırma yaparım, belki daha iyi bir yöntem vardır. ancak uygulama verilerinizi cihaz içerisinde güvenilir bir şekilde olmadan tutulması sorun yaratabilir, bu verileri daha güvenli bir sunucuda saklamak daha sağlıklı gibi..
picture-21471-1433938289.png
waycell
09.09.2014 - 12:48

söylediklerinizden anladığım kadarıyla sqlite database sdcard üzerinden çalışamıyor. ancak belirli periyotlarla yedeklenmesi sağlanabilir. yanılıyormuyum

engin yolal
09.09.2014 - 12:53
evet, ben de küçük bir araştırma yaptım ancak tam olarak sizin istediğiniz gibi bir yönteme ulaşamadım. dosyaları yedekleyip belirli bir havuzda tutabilirsiniz. isteğe göre sorun olduğunda bunları yeniden servis edersiniz.
Profile picture for user engin.yolal
engin.yolal
09.09.2014 - 12:08

Merhaba,

Öncelikli olarak sqlite database'inize erişmek için eclipse içerisinden şu yolu takip edebilirsiniz. Açık olmaması için telefon rootlu olmadığında database dışarıdan erişime kapalı diye biliyorum.

 DDMS-> file explorer-> data->data->see your package name-> databases->here your database file. 

Sqlite database'inizi SDcard'a yedeklemek için de;

 


[code]
try {

File sd = Environment.getExternalStorageDirectory();

File data = Environment.getDataDirectory();

if (sd.canWrite()) {

String currentDBPath = "//data//{package name}//databases//{database name}";

String backupDBPath = "{database name}";

File currentDB = new File(data, currentDBPath);

File backupDB = new File(sd, backupDBPath);

if (currentDB.exists()) {

FileChannel src = new FileInputStream(currentDB).getChannel();

FileChannel dst = new FileOutputStream(backupDB).getChannel();

dst.transferFrom(src, 0, src.size()); src.close(); dst.close();

} } }

catch (Exception e) {

}
[/code]

 

kodlarını deneyebilirsiniz.