我正在尝试通过使用列表中的表名来删除一组表
,然后获取每个字符串的类型并将其删除:
List<string> models = new List<string> { "WebBrowser", "Notebook", "Members"};
foreach (string mod in models)
{
Type type = Type.GetType(mod));
using (var dbConn = new SQLiteConnection(app.DBPath))
{
dbConn.RunInTransaction(() =>
{
dbConn.DropTable<type>();
//dbConn.DropTable<WebBrowser>();
dbConn.Dispose();
dbConn.Close();
});
}
}
问题:我不能用这种方式删除表,DropTable 需要类的名称(例如 WebBrowser )而我不知道我不想单独删除每个表(即 dbConn.DropTable< WebBrowser >();),因为我有超过 50 个表要删除。
错误:“找不到类型或命名空间名称‘type’”。 (这个错误是预料之中的,因为我的命名空间中没有类“类型”。
最佳答案
您可以在 SQLite 中使用 SQL 命令删除表。您需要做的就是每次迭代您的集合并构建一个 SQL 字符串,然后执行它
List<string> models = new List<string> { "WebBrowser", "Notebook", "Members"};
foreach (string mod in models)
{
using (var dbConn = new SQLiteConnection(app.DBPath))
{
SQLiteCommand command = new SQLiteCommand(dbConn);
command.CommandText = string.Format("DROP TABLE {0};", mod);
command.ExecuteNonQuery();
}
}
我不确定这种语法是否完全适合您的情况(我只在 Windows 8.1 中使用过 sqlite-net),但一般方法是合理的
关于c# - 使用表名列表删除 SQLite 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27721183/