如何克隆现有的表模式以使用C#创建具有相同结构的新空表?

时间:2012-10-22 16:06:49

标签: 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如何克隆它?我查看了DataTable.Clone,但我看不到如何设置新名称并在数据库上创建该表。

1 个答案:

答案 0 :(得分:1)

SMO(Server Management Objects)具有大量的表脚本功能。我会从那里开始。

article可能会帮助您入门。

如果你想避免使用SMO,你可以通过SQLDataReader来实现,如下所示(或接近这个):

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();
    }
}