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

时间:2015-09-11 13:23:54

标签: c# windows sqlite

我正在使用sqlite开发一个Windows Phone 8应用程序,并且我正在尝试检查数据库是否存在,如果它不存在,则应该创建它。但我不断收到错误消息“System.windows.shapes.path不包含combine的定义”。还有其他方法可以做到这一点或者我该如何改进它?

public static string DB_PATH = Path.Combine(Path.Combine(ApplicationData.Current.LocalFolder.Path, "ContactsManager.sqlite"));//DataBase Name 
    public App()
    {
        if (!CheckFileExists("ContactsManager.sqlite").Result)
        {
            using (var db = new SQLiteConnection(DB_PATH))
            {
                db.CreateTable<Contacts>();
            }
        }
    }

    private async Task<bool> CheckFileExists(string fileName)
    {
        try
        {
            var store = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
            return true;
        }
        catch
        {
        }
        return false;
    }

4 个答案:

答案 0 :(得分:2)

您真的需要检查数据库是否存在?我不知道Windows手机,但在Windows中,只要您尝试将表添加到SQLite数据库中,如果数据库不存在,它就会创建它。如果您担心已存在的表,可以使用:

CREATE TABLE IF NOT EXISTS tableName(...)

(我试图将其作为评论,但我没有声誉)

答案 1 :(得分:1)

为什么Path.Combine中有Path.Combine?如果Path.Combine没有一个或两个参数,为什么不简单地连接两个字符串?

你有2x:public static string DB_PATH = Path.Combine(Path.Combine(ApplicationData.Current.LocalFolder.Path, "ContactsManager.sqlite"));

答案 2 :(得分:1)

您可以通过以下方式查看:

public async Task<bool> isFilePresent(string fileName)
 {
 return System.IO.File.Exists(string.Format(@"{0}\{1}", ApplicationData.Current.LocalFolder.Path, fileName);
 }

答案 3 :(得分:0)

@Panagiotis Kanavos的评论是对的,您已使用错误的命名空间解析了 Path 类!

删除

using System.Windows.Shapes; // for silverlite
using Windows.UI.Xaml.Shapes; // for winrt

并添加

using System.IO;