当前位置: 首页 > 知识库问答 >
问题:

如何检查SQLite数据库是否存在,然后创建它

常源
2023-03-14

我在SQLite数据库中有数据。但我不能确定它是否会一直存在。因此,当我启动我的程序时,我首先要检查SQLite数据库是否存在,当不存在时,我要用DbContext中已有的DbSet创建一个数据库。

public class MaintenanceDB : DbContext
{
    public MaintenanceDB() : base (new SQLiteConnection(new 
SQLiteConnectionStringBuilder { DataSource = "data.sqlite"}.ConnectionString), true)
     { 
     }
     public DbSet<MaintenanceEntry> MaintenanceEntries { get; set; }
     public DbSet<ModuleEntry> ModuleEntries { get; set; }

     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     {
         modelBuilder.Entity<MaintenanceEntry>().ToTable("some Table");
         modelBuilder.Entity<ModuleEntry>().ToTable("some Table");
     }

}

当我删除SQLite数据库并再次启动程序时,我希望创建SQLite数据库。

共有1个答案

唐宏壮
2023-03-14
<connectionStrings>
     <add name="MaintenanceDB" connectionString="" providerName="System.Data.SqLite" />
</connectionStrings>
public class MaintenanceDB : DbContext
{
    public MaintenanceDB() : base ("Name=MaintenanceDB")

并尝试以下解决方案:

var context = new MaintenanceDB();
if (!context.Database.Exists())
    context.Database.Create();

var context = new MaintenanceDB();
context.Database.CreateIfNotExists();

或创建一个初始化器类,如下所示:

// public class ContentInitializer: DropCreateDatabaseAlways <MaintenanceDB>
// public class ContentInitializer: CreateDatabaseIfNotExists <MaintenanceDB>
public class ContentInitializer: DropCreateDatabaseIfModelChanges <MaintenanceDB>

并将其放在应用程序的开头。

Database.SetInitializer (new ContentInitializer ());
 类似资料:
  • 问题内容: 建立连接后是否可以检查(MySQL)数据库是否存在。 我知道如何检查数据库中是否存在表,但是我需要检查数据库是否存在。如果没有,我必须调用另一段代码来创建它并填充它。 我知道所有这些听起来都不太优雅-这是一个快速又肮脏的应用程序。 问题答案: 如果您只想知道数据库是否存在,以免在尝试创建数据库时出错,只需使用(From here):

  • 问题内容: 我正在将实时数据库与Google的Firebase结合使用,并且正在尝试检查是否存在孩子。 我的数据库结构如下 我想检查room1是否存在。我尝试了以下方法: 在访问它时,返回该房间属性的JSON,但是我如何检查room()是否从那里开始呢? 评论是否需要任何澄清 问题答案:

  • 问题内容: 我已经在互联网上搜索了几天,但找不到仅使用ODBC和SQL来解决此问题的通用方法。 有没有办法查看数据库是否已经存在,只能使用 ODBC 。它必须是标准SQL,因为用户可以选择自己选择的DSN(意味着他自己的SQL Server)。 这意味着我无法检查服务器上的主表,因为在不同的SQL服务器上它们的名称不同。 谢谢。 问题答案: 不知道这是否为时已晚,或者对于您来说足够“便携”。 我只

  • 问题内容: 将Apache Derby与Java结合使用(J2ME,但我认为这没有什么不同),是否有任何方法可以检查数据库是否已经存在并包含表? 问题答案: 除了MySQL之外,我什么都不知道,只有很少的解决方法,这与MySQL具有IF EXIST的功能不同。 您要做的是,尝试连接数据库,如果不可能的话。在成功建立连接之后,您可以执行简单的选择,例如SELECT count(*)FROM TABL

  • 我需要检查一列是否存在,如果不存在,请添加它。根据我的研究,sqlite似乎不支持是否应该使用语句和case语句。 以下是我目前掌握的情况: 但我得到了一个错误:接近“ALTER”:语法错误。 有什么想法吗?

  • 问题内容: 我正在尝试制作简单的Java代码,以检查MySQL DB中是否存在表和/或列。我应该使用Java代码进行检查还是生成一个SQL查询字符串并执行以进行检查? 编辑- @ aleroot- 我尝试使用您的代码,如下所示。运行以下代码时,我看不到任何表或列。我只看到这个 我的数据库有很多数据库,表和列。我不知道为什么该程序可以正常工作。 问题答案: 要检查表是否存在,可以按以下方式使用Dat