【发布时间】:2016-02-12 08:40:46
【问题描述】:
我使用 SMO 用 SQL Server 数据库的数据填充 SQL Compact 数据库。
这是我实际使用的代码:
foreach(Table l_tblCurrent in l_dbDatabase.Tables)
{
if(l_tblCurrent.IsSystemObject) continue;
ScriptingOptions l_scOptions = new ScriptingOptions();
l_scOptions.NoIdentities = true;
l_scOptions.NoCollation = true;
l_scOptions.NoCommandTerminator = true;
l_scOptions.NoFileGroup = true;
l_scOptions.ScriptSchema = true;
l_scOptions.ScriptData = true;
foreach(string l_strCurrent in l_tblCurrent.EnumScript(l_scOptions))
{
l_sccDBFCommand.CommandText = l_strCurrent.Replace("[dbo].", "");
l_sccDBFCommand.ExecuteNonQuery();
}
}
它工作得很好,但是对于几个表,我不想复制所有的行。我希望能够仅选择与要复制的 WHERE 子句匹配的行。
有可能吗?
【问题讨论】:
-
为什么不简单地使用 SQL Server Compact Toolbox(或相关的脚本 API)为您执行此操作 - API 支持“WHERE”子句
-
您好 ErikEJ,感谢您的评论。我不能使用工具箱,示例中的代码是一个大型软件的一小部分,它可以自动创建要在特殊手持设备上使用的数据包。
-
"或相关的脚本 API" - 即可以包含在“大软件”中的库nuget.org/packages/ErikEJ.SqlCeScripting
-
你得到alternative解决方案了吗?源代码示例可能...
-
您好 Kiquenet,我的解决方案是填充 SQL Compact 数据库中的所有数据,然后连接到 Compact 数据库并使用 SQL 命令删除不需要的项目。不是很快,但可以。
标签: c# sql sql-server sql-server-ce smo