2016-04-11 5 views
1

私はsqliteデータベースを持っています。コマンドラインからdbを直接照会すると、schema_versionの結果は3078です。なぜ.NETのSQLiteスキーマバージョンが1

しかし、これを.NETで行うと、結果は常に '1'にな​​ります。ここで

は抜粋です:

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"); 
      } 
     } 
    } 
} 

私が何か間違ったことをやっていますか?

+1

私がうんざりしている場合は私を修正しますが、ファイルベースのものはsqlliteではありませんか?接続文字列が.NETコードと異なるファイルを指している可能性があります。そのため、同じスキーマが表示されません。 –

+0

また、ファイルが存在しない場合、SQLiteは新しいデータベースを作成しようとします。接続文字列を表示します。 –

+0

@CL。これはメモリにロードされた(ファイルからの)データベースです。それはバージョン情報を「リセット」しますか? – cyrus

答えて

0

理想的には、使用している接続文字列が表示されます。最も可能性の高いケースは、.Net経由で接続しているときに、同じデータベースに接続していないということです。スキーマのバージョンは、スキーマの変更時にSQLiteによって自動的にインクリメントされるため、1を返すということは、これが新しいデータベースであることを示しています。確認するには、別のクエリを実行して、そこにあると思われる他のデータを取り戻します。おそらくdbが空であることがわかります。

関連する問題