Создать таблицу БД из таблицы набора данных
Возможно ли (в Vb.Net 2005) без ручного анализа свойств таблицы набора данных создать таблицу и добавить ее в базу данных?
У нас есть старые версии нашей программы на некоторых машинах, которые, очевидно, имеют нашу старую базу данных, и мы ищем способ определить, есть ли отсутствующая таблица, а затем сгенерировать таблицу на основе текущего статуса таблицы в наборе данных. Мы перепрограммировали таблицу каждый раз, когда выпускали новую версию (если добавлялись новые столбцы), но мы хотели бы избежать этого шага, если это возможно.
Ответов (2)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()
, чтобы создать свою таблицу.