9

是否可以(在 Vb.Net 2005 中)在不手动解析数据集表属性的情况下创建表并将其添加到数据库中?

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

4

2 回答 2

7

请参阅此 MSDN 论坛帖子:从 ADO.net DataTable 在 SQL Server 中创建新表

在这里,张贴者似乎在尝试和您做同样的事情,并提供了使用 DataTable 中包含的模式生成 Create Table 语句的代码。

假设这可以正常工作,那么您可以获取该代码,并将其提交到数据库SqlCommand.ExecuteNonQuery()以创建您的表。

于 2008-08-19T20:09:46.937 回答
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是数据表的名称。
或者,您可以替换:

adapter.update(dt);

//if you have a DataSet
adapter.Update(ds.Tables[0]); 
于 2012-11-29T11:56:01.927 回答