是否有可能(在Vb.Net 2005中),无需手动解析数据集表属性,创建表并将其添加到数据库中?
我们在某些机器上有旧版本的程序,显然我们的旧数据库,我们正在寻找一种方法来检测是否有丢失的表,然后根据表中的当前状态生成表数据集。我们每次发布新版本时都会重新编写表格(如果添加了新列),但我们希望尽可能避免这一步骤。
答案 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]);