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

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

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

19.08.2008 15:51:34
Ссылка Яакова Эллиса теперь не работает, она изменилась на эту .
P-L 21.07.2011 14:45:43
2 ОТВЕТА

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

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

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

7
5.11.2012 14:25:59

Вот код:

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]); 
2
14.12.2018 12:19:27