2014-06-12 28 views
12

Varsa, sqlite db programsal olarak oluşturmaya çalışıyorum. Aşağıdaki kodu yazdım ama son satırda bir istisna alıyorum.Eğer mevcut değilse, programsal olarak sqlite db yaratılsın mı?

if (!System.IO.File.Exists("C:\\Users\\abc\\Desktop\\1\\synccc.sqlite")) 
{ 
    Console.WriteLine("Just entered to create Sync DB"); 
    SQLiteConnection.CreateFile("C:\\Users\\abc\\Desktop\\1\\synccc.sqlite"); 
    string sql = "create table highscores (name varchar(20), score int)"; 
    SQLiteCommand command = new SQLiteCommand(sql, sqlite2); 
    command.ExecuteNonQuery(); 
} 
sqlite2 = new SQLiteConnection("Data Source=C:\\Users\\abc\\Desktop\\1\\synccc.sqlite"); 

ben istisna Invalid operation exception was unhandled olduğunu command.ExecuteNonQuery(); çizgisinde istisna olsun. Projenize bir sqlite dosyası eklemenin başka yolu var mı? Bunu manuel yapabilir miyim? Eğer değilse, yukarıdaki sorunu nasıl çözebilirim?

+2

Bu noktada sqlite2'nin değeri nedir? –

+0

değeri null – zzzzz

cevap

22

Veritabanındaki herhangi bir veri tanımı komutunu yürütmek için komutu iletmek için açık bir bağlantıya ihtiyacınız vardır. Kodunuzda, sorgunun yürütülmesinden sonra bağlantıyı yaratırsınız.

Tabii ki oluşturulduktan sonra, size sağlayıcının sürüm 3 kullanırsanız, Ancak bağlantısını

if (!System.IO.File.Exists("C:\\Users\\abc\\Desktop\\1\\synccc.sqlite")) 
{ 
    Console.WriteLine("Just entered to create Sync DB"); 
    SQLiteConnection.CreateFile("C:\\Users\\abc\\Desktop\\1\\synccc.sqlite"); 

    using(sqlite2 = new SQLiteConnection("Data Source=C:\\Users\\abc\\Desktop\\1\\synccc.sqlite")) 
    { 
     sqlite2.Open(); 
     string sql = "create table highscores (name varchar(20), score int)"; 
     SQLiteCommand command = new SQLiteCommand(sql, sqlite2); 
     command.ExecuteNonQuery(); 
    } 
} 

açmaya gerek, dosyanın varlığını denetlemek için gerekmez. Sadece bağlantıyı açmak mevcut değilse dosyayı oluşturur.

+0

Artık Iam bu istisnayı alıyor "DLL yüklenemedi 'SQLite.Interop.dll': Belirtilen modül bulunamadı. (HRESULT özel durum: 0x8007007E)" bağlantıyı açtığım satırda – zzzzz

+0

Hope Bu yardımcı olur http://stackoverflow.com/questions/13028069/unable-to-load-dll-sqlite-interop-dll – Steve

+0

hala aynı hata alıyorum – zzzzz

İlgili konular