我正在连接到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
,但我看不到如何设置新名称并在数据库上创建该表。
答案 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();
}
}