如何在SQLite中检查数据库是否存在C#

SQL*_*per 17 c# sqlite

我目前正在使用C#编写应用程序并使用sqlite作为嵌入式数据库.我有我的应用程序在启动时创建一个新的数据库,但我如何让它检查数据库是否存在?如果确实存在,我如何使用它,如果不存在如何创建新数据库?

这是我到目前为止:

private void MainWindow_Loaded(object sender, EventArgs e)
{
    SQLiteConnection sqlite_conn;
    SQLiteCommand sqlite_cmd;
    bool newdb = false;
    if (newdb == true)
    {
        sqlite_conn = new SQLiteConnection("DataSource=database.db;Version=3;");
        sqlite_conn.Open();
        MessageBox.Show("31");
    }
    else
    {
        sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;");
        sqlite_conn.Open();    
        sqlite_cmd = sqlite_conn.CreateCommand();    
        sqlite_cmd.CommandText = "CREATE TABLE Client (id integer primary key, Title  varchar(100),Name  varchar(100),Surname  varchar(100),Dateofbirth DateTime , Propertyname varchar(100),Moveindate DateTime,Relationship varchar(100),Spouse  varchar(100),Gender  varchar(100), spTitle  varchar(100),SpouseName  varchar(100),SpouseSurname  varchar(100),spDateofbirth DateTime ,spRelationship varchar(100),spSpouse  varchar(100),spGender  varchar(100));";
        sqlite_cmd.ExecuteNonQuery();
    }    
    sqlite_conn.Close();
    MessageBox.Show("dasdas");    
}
Run Code Online (Sandbox Code Playgroud)

Tyl*_*D87 30

怎么样:

if(File.Exists("database.db"))
Run Code Online (Sandbox Code Playgroud)

编辑:更改了原始代码中匹配源的路径.

  • 如果这是在Windows 7下的程序文件中运行,则[UAC文件重定向](http://blogs.windows.com/windows/archive/b/developers/archive/2009/08/04/user-account-control-data -redirection.aspx)可能是一个问题,因为不会在预期的位置创建文件. (3认同)

小智 5

public async Task<bool> IsDbExists(string fileName)
    {
        try
        {
            var item = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
            var db = new SQLiteConnection(DbHelper.DBPATH);
            var tb1 = db.GetTableInfo("Domain");
            var tb2 = db.GetTableInfo("Account");
            var tb3 = db.GetTableInfo("Product");
            var tb4 = db.GetTableInfo("Review");
            if (item == null || tb1.Count == 0 || tb2.Count == 0 || tb3.Count == 0 || tb4.Count == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        catch
        {
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

This is one of the solution