Создать таблицу БД из таблицы набора данных - PullRequest
9 голосов
/ 19 августа 2008

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

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

Ответы [ 2 ]

7 голосов
/ 20 августа 2008

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

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

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

2 голосов
/ 29 ноября 2012

Вот код:

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]); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...