Сведения о вопросе

Fedya

16:40, 11th August, 2020

Теги

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

Просмотров: 515   Ответов: 2

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

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



  Сведения об ответе

dump

15:49, 9th August, 2020

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

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

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


  Сведения об ответе

LAST

00:31, 1st August, 2020

Вот этот код:

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]); 


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться