如何使用C#克隆现有表架构以创建具有相同结构的新空表?
我正在连接到SQL Server 2008数据库 我想使用C#创建一个新表,其名称由我指定,看起来与该数据库中的现有表完全相同。没有涉及外键 我有这样的代码如何使用C#克隆现有表架构以创建具有相同结构的新空表?,c#,sql-server,sql-server-2008,C#,Sql Server,Sql Server 2008,我正在连接到SQL Server 2008数据库 我想使用C#创建一个新表,其名称由我指定,看起来与该数据库中的现有表完全相同。没有涉及外键 我有这样的代码 DataTable table = con.GetSchema("Tables"); foreach (System.Data.DataRow row in table.Rows) { foreach (System.Data.DataColumn col in table.Columns) 但这并没有让我走多远。我真的需要自己迭
DataTable table = con.GetSchema("Tables");
foreach (System.Data.DataRow row in table.Rows)
{
foreach (System.Data.DataColumn col in table.Columns)
但这并没有让我走多远。我真的需要自己迭代所有的表吗?即使我识别了数据表
如何克隆它?我查看了DataTable.Clone,但看不到如何设置新名称并在数据库上创建该表。SMO()具有大量的表脚本功能。我会从那里开始
这可能会帮助你开始
如果您想避免SMO,可以通过SQLDataReader来实现,如下所示(或类似的方法):
SMO()具有大量的表脚本编写功能。我会从那里开始
这可能会帮助你开始
如果您想避免SMO,可以通过SQLDataReader来实现,如下所示(或类似的方法):
没有编译过的东西!在过去的一个小时里,我一直在费力地阅读MSDN文档,尝试上面粘贴的代码之类的东西……没有编译的东西!在过去的一个小时里,我一直在阅读MSDN文档,尝试上面粘贴的代码……有没有办法避免SMO?我试图避免依赖性,因为我的应用程序是新用户运行的第一件事。我似乎记得SMO需要通过SQL Server MSI安装?@Ben-我已经更新了答案,添加了一些代码,这些代码应该允许您读取目标表架构。然后,您应该能够在此基础上创建一个新表。有没有避免SMO的方法?我试图避免依赖性,因为我的应用程序是新用户运行的第一件事。我似乎记得SMO需要通过SQL Server MSI安装?@Ben-我已经更新了答案,添加了一些代码,这些代码应该允许您读取目标表架构。然后,您应该能够在此基础上创建一个新表。
using (SqlConnection cnn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = cnn.CreateCommand())
{
cmd.CommandText = "Execute some SQL Select here. Doesn't matter what. We just need a reference to the table.";
cmd.CommandType = CommandType.Text;
cnn.Open();
using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.KeyInfo))
{
schema = rdr.GetSchemaTable();
}
cnn.Close();
}
}