2016-04-11 15 views
1

Bir sqlite veritabanına sahibim. Db'yi doğrudan komut satırından sorguladığımda, schema_version sonucu 3078'dir..NET'te neden SQLite şema sürümü her zaman 1

Bunu .NET'te yaptığımda, sonuç her zaman '1'dir. Yanlış bir şey yapıyor

public static long GetInternalSchemaVersion(this SQLiteConnection con) 
{ 
    using (var cmd = con.CreateCommand()) 
    { 
     cmd.CommandText = string.Format("PRAGMA schema_version;"); 

     DataTable results; 

     using (results = new DataTable()) 
     { 
      using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd)) 
      { 
       da.Fill(results); 

       return results.ToEnumerable().First().GetInt32("schema_version"); 
      } 
     } 
    } 
} 

Am: Burada

parçacık İşte?

+1

Sarıldığımda beni düzeltin, ama bu masa başı bir şey değil mi? Belki de bağlantı dizginiz, .NET kodunuz olarak bir difent dosyasına işaret ediyor ve aynı şemayı görmüyor mu? –

+0

Ayrıca, dosya mevcut değilse, SQLite yeni bir veritabanı (deneyin) oluşturacaktır. Bağlantı dizesini göster. –

+0

@CL. Bu, belleğe yüklenen bir dosyadan (bir dosyadan). Bu sürüm bilgisini 'sıfırlıyor' mu? – cyrus

cevap

0

İdeal olarak, kullandığınız bağlantı dizesini gösterirsiniz. En büyük olasılık şudur: .Net ile bağlandığınızda aynı veritabanına bağlanmazsınız. Şema sürümü, şema değişikliği üzerinde SQLite tarafından otomatik olarak artırılır, bu yüzden 1 döndürme gerçeği bunun yeni bir veritabanı olduğunu gösterir. Doğrulamak için, orada olmasını beklediğiniz diğer verileri geri çekmek için başka bir sorgu çalıştırın. Muhtemelen db'nin boş olduğunu göreceksiniz.

İlgili konular