Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#克隆现有表架构以创建具有相同结构的新空表?_C#_Sql Server_Sql Server 2008 - Fatal编程技术网

如何使用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) 但这并没有让我走多远。我真的需要自己迭

我正在连接到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.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();
    }
}