是否可以执行一个命令从SQL CE数据库中删除所有表?
感谢帮助。
select 'drop table ' || table_name || ';'
from information_schema.tables;
然后运行该脚本。由于在SQLCE中没有CASCADE选项(据我所知),因此您可能需要运行多次该脚本。
使用 System.IO.File.Delete 删除文件,然后运行所需的 CREATE TABLE 脚本。
这是我的做法:
在Visual Studio中使用SQL Server Compact/SQLite Toolbox,右键单击.sdf文件,选择Script Database > Script Database Schema... 将其保存为CreateTables.sqlce
在PowerShell控制台中粘贴以下内容:function GenerateDropScript($DbSchemaFile)
{
function Reverse($inputArr)
{
$arr = @($inputArr)
[array]::Reverse($arr)
return $arr
}
$TableNames = Get-Content $DbSchemaFile |
? { $_.StartsWith('CREATE TABLE') } |
% { $_.Substring(14).Replace('] (', '') }
$ReverseNames = Reverse($TableNames)
"Generating DROP script for all tables in: `n`t$DbSchemaFile`n"
$ReverseNames | % { "DROP TABLE [$_]; GO;" }
}
GenerateDropScript CreateTables.sqlce
这将读取CREATE脚本并按相反的顺序生成所有表的DROP脚本,以便您不会遇到任何依赖错误。
你也可以删除数据库,然后重新创建,但这将擦除所有配置,因此可能不是最佳选择。