从数据集表创建数据库表

时间:2008-08-19 15:51:34

标签: database vb.net visual-studio-2005

是否有可能(在Vb.Net 2005中),无需手动解析数据集表属性,创建表并将其添加到数据库中?

我们在某些机器上有旧版本的程序,显然我们的旧数据库,我们正在寻找一种方法来检测是否有丢失的表,然后根据表中的当前状态生成表数据集。我们每次发布新版本时都会重新编写表格(如果添加了新列),但我们希望尽可能避免这一步骤。

2 个答案:

答案 0 :(得分:7)

请参阅此MSDN论坛帖子:Creating a new Table in SQL Server from ADO.net DataTable

这里的海报似乎试图与你做同样的事情,并提供使用DataTable中包含的模式生成Create Table语句的代码。

假设这样可以正常工作,您可以接受该代码,并通过SqlCommand.ExecuteNonQuery()将其提交到数据库,以便创建您的表格。

答案 1 :(得分:2)

以下是代码:

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是DataTable的名称 或者,您可以替换:

adapter.update(dt);

//if you have a DataSet
adapter.Update(ds.Tables[0]);