创建数据库表是否有可能(在2005年Vb.Net),而无需手动分析数据集表格属性,创建表,并将其添加到数据库?从数据集表
我们在某些机器上有旧版本的程序,显然有我们的旧数据库,而且我们正在寻找一种方法来检测是否存在缺少的表,然后根据表的当前状态生成表在数据集中。每当我们发布新版本(如果添加新列),我们都在重新编写表格脚本,但如果可能的话,我们希望避免这一步骤。
创建数据库表是否有可能(在2005年Vb.Net),而无需手动分析数据集表格属性,创建表,并将其添加到数据库?从数据集表
我们在某些机器上有旧版本的程序,显然有我们的旧数据库,而且我们正在寻找一种方法来检测是否存在缺少的表,然后根据表的当前状态生成表在数据集中。每当我们发布新版本(如果添加新列),我们都在重新编写表格脚本,但如果可能的话,我们希望避免这一步骤。
看到这个MSDN论坛帖子:Creating a new Table in SQL Server from ADO.net DataTable。
这里海报似乎试图做同样的事情,你,并提供了利用包含在一个DataTable的架构CREATE TABLE语句代码。
假设这个作品,因为它应该,然后你可以采取的代码,并通过SqlCommand.ExecuteNonQuery()
以创建表提交到数据库。
下面是代码
SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa123;database=Example1");
con.Open();
string sql = "Create Table abcd (";
foreach (DataColumn column in dt.Columns)
{
sql += "[" + column.ColumnName + "] " + "nvarchar(50)" + ",";
}
sql = sql.TrimEnd(new char[] { ',' }) + ")";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
cmd.ExecuteNonQuery();
using (var adapter = new SqlDataAdapter("SELECT * FROM abcd", con))
using(var builder = new SqlCommandBuilder(adapter))
{
adapter.InsertCommand = builder.GetInsertCommand();
adapter.Update(dt);
}
con.Close();
希望你有解决了这个问题。 这里dt是数据表的名称。 或者U可以与
adapter.Update(ds.Tables[0]); \\if u have a dataset
请投我的答案,如果你认为我已经为您提供了一个答案替换
adapter.update(dt);
!
Yaakov Ellis链接现在已损坏,它已更改为[this](http://social.msdn.microsoft.com/Forums/zh-CN/adodotnetdataproviders/thread/4929a0a8-0137-45f6-86e8-d11e220048c3/ )。 – 2011-07-21 14:45:43