Merhaba;

Java ile işyerimiz için ufak çaplı müşteri-ürün yönetim uygulaması geliştiriyorum. Uygulama masaüstü çalışan bir uygulama ve veritabanı olarak SQLite kullanıyorum. Toplamda 5 tablo bulunmakta. Her tablo ile ilgili işlemler farklı bir internalForm üzerinde gerçekleşmekte. İki tablo üzerinde select, insert, update, delete gibi işlemleri sorunsuz olarak gerçekleştirirken diğer tablolarda bir insert işlemi yaptıktan sonra ikinciyi yaparken;

java.sql.SQLException: [SQLITE_BUSY]  The database file is locked (database is locked)

hatasını alıyorum.

Hata aldığım class'ın insert işlemi yapan fonksiyonu : http://pastie.org/10318601

Yardımlarınız için şimdiden teşekkürler.

(Her ihtimale karşın alternatif DBMS önerilerinizi de cevaplarınıza eklerseniz sevinirim.)

soruldu: 29 Tem '15, 11:57

msenell's gravatar image

msenell
0111
cevap kabul oranı: 0%

Ben mysql i öneririm daha gelişmiş işinizi fazlasıyla görür

(30 Tem '15, 03:29) ibrahim472 ibrahim472's gravatar image

Sistem masaüstünde çalışacak ve herhangi bir bilgisayarda bu programın çalışması gerekiyor. Bu yüzden MySQL bana uygun değil.

(30 Tem '15, 04:57) msenell msenell's gravatar image
1

SQLite yerine H2 veritabanini tavsiye ederim, hizli hafif ve her platformda install yapmadan da calisabiliyor. http://www.h2database.com/html/main.html

(31 Tem '15, 06:40) CemIkta ♦ CemIkta's gravatar image

Sqlite.org şöyle bir açıklama yapmış

Note that an SQLITE_LOCKED error is distinct from SQLITE_BUSY (5). SQLITE_BUSY means that another database connection (probably in another process) is using the database in a way that prevents you from using it

Birden fazla connection oluşturduysanız ve aynı anda işlem yapmayı deniyorsanız böyle bir hata oluşmuş olabilir. Sqlite aynı anda sadece tek bir yazma işlemini kabul ediyor. Bir yazma işlemi bitmeden diğerini çalıştırmış olmanız yüksek olasılık. Kodu tekrar gözden geçirmekte fayda var.

permanent link

cevaplandı: 30 Tem '15, 03:09

ersinyildiz's gravatar image

ersinyildiz
2.8k31438
cevap kabul oranı: 28%

Hayır aynı class ile giriş yapıyorum.Hatta bu sabah veritabanını komple silip yeniden oluşturdum ve sorun çözüldü. Onlarca kayıt girdim, tam da şu anda aynı hatayı tekrar verdi. SQLite beni hayal kırıklığına uğrattı, ilerde bütün veriler girildikten sonra da böyle bir hatayla karşılaşmayı göze alamam. Bir alternatife geçmeyi düşünüyorum. Öneriniz varsa alabilirim.

(30 Tem '15, 04:55) msenell msenell's gravatar image

SQL Server Compact önerecektim ama onun da JDBC desteği kesilmiş sanırım. SQLite doğru seçim , bence problemi gidermeye odaklanalım.

(30 Tem '15, 06:04) ersinyildiz ersinyildiz's gravatar image

Problem çok saçma. Bu sabah çok güzel bir şekilde çalışıyordu. onlarca kayıt girdim peşpeşe. bi anda tekrar aynı hatayı verdi. Çözülmesi çok iyi olur tabiki ama şuan her ihtimale karşın Derby'i araştırmaya başladım.

(30 Tem '15, 06:29) msenell msenell's gravatar image

Sorunuza DatabaseClass 'ı eklemeniz mümkün mü ?

(31 Tem '15, 07:54) ersinyildiz ersinyildiz's gravatar image
1

Aynı class'larla Derby'e geçtim. Bir haftadır veri girişi yapıyorum. Hiçbir problem çıkmadı. Gördüğüm dezavantajları; -SQLite'a göre biraz daha yavaş geldi bana. -Tabloları düzenlemek için bir arayüz yok(Veya ben bulamadım) -Tek dosya değil. Taşıma ve yedeklemesi biraz daha zahmetli olacak.

(07 Ağu '15, 10:49) msenell msenell's gravatar image

Eğer sqlite3_prepare() kullanarak insert işlemi yapıyorsanız insert işlemi bittikten sonra sqlite3_finalize() kullanarak Prepared Statement nesnesini sonlandırmanız gerekiyor.

permanent link

cevaplandı: 30 Tem '15, 09:51

iskenderoguz's gravatar image

iskenderoguz
24191116
cevap kabul oranı: 25%

değiştirildi: 30 Tem '15, 09:52

Hayır standart java komutlarını kullanıyorum.

(31 Tem '15, 02:36) msenell msenell's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×39
×21
×1

Soruldu: 29 Tem '15, 11:57

Görüntüleme: 603 kez

Son güncelleme: 07 Ağu '15, 10:49

powered by BitNami OSQA