我正在使用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;
}
答案 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;