Создать таблицу БД из таблицы набора данных

Возможно ли (в Vb.Net 2005) без ручного анализа свойств таблицы набора данных создать таблицу и добавить ее в базу данных?

У нас есть старые версии нашей программы на некоторых машинах, которые, очевидно, имеют нашу старую базу данных, и мы ищем способ определить, есть ли отсутствующая таблица, а затем сгенерировать таблицу на основе текущего статуса таблицы в наборе данных. Мы перепрограммировали таблицу каждый раз, когда выпускали новую версию (если добавлялись новые столбцы), но мы хотели бы избежать этого шага, если это возможно.

Ответов (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]); 

См. Это сообщение на форуме MSDN: Создание новой таблицы в SQL Server из ADO.net DataTable .

Здесь плакат, кажется, пытается сделать то же самое, что и вы, и предоставляет код, который генерирует оператор Create Table с использованием схемы, содержащейся в DataTable.

Предполагая, что это работает должным образом, вы можете взять этот код и отправить его в базу данных SqlCommand.ExecuteNonQuery(), чтобы создать свою таблицу.