UWP - 检查表是否存在

时间:2016-11-04 03:30:00

标签: c# sqlite uwp

在SQLite网站上,与VS2015中提供的“SQLite for Universal Windows Platform”扩展相关的C#中缺少SQLite文档。 有没有人看到任何特定于此扩展程序的文档?

我正在尝试查看我的数据库中是否存在表,但找不到执行此操作的方法。 这就是我在做什么以及为什么:

SQLite.Net.SQLiteConnection conn; 

string path = path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "entries.sqlite");
if (!System.IO.File.Exists(path))
{
    conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);
    conn.CreateTable<Entry>();
}
else
{
     conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);
}

我这样做是因为执行此操作时:

conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);

如果文件不存在,则创建该文件。所以首先我需要测试它是否存在。我的假设是,如果文件存在,我的表存在,因为没有在创建文件后不立即创建表的情况。 我是否在提供的方法范围内错过了一些更直接的表格测试方法?

谢谢!

PS。我已检查我的问题是否已得到解答,但未找到与此API直接相关的任何内容。

2 个答案:

答案 0 :(得分:0)

您可以使用系统sqlite_master表的查询来查看是否存在具有给定名称的表:

var tableQuery = "SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='Entry';"
bool tableExists = conn.ExecuteScalar<int>( tableQuery ) == 1;

如果表不存在,查询将返回0,如果存在,则返回1.

但是,即使表格已存在,您也不必担心调用conn.CreateTable<Entry>();。 SQLite.net足够聪明,只有当它还不存在时才能创建表。如果该表已在数据库中,则将忽略此调用。

答案 1 :(得分:0)

通用解决方案:

localhost