В этой статье я покажу как программным способом можно на c# создать таблицу в БД SQL-Server.
Кстати, в самый раз ознакомиться с Установка внешних ключей
Также интересно может оказаться статья Left Join on - выборка по левому внешнему соединению (SQL Server)
Зачем так? Ведь можно создать таблицу в дизайнере! Ответ заключается в доступности сервера, на котором лежит ваша БД.
Если это, к примеру, база сайта, то скорее всего она находится на удаленном сервере, но не на вашем домашнем ПК.
И хотя, для создания новой таблицы в существующей БД есть несколько очевидных способов, мы предположим ситуацию, когда админы хостинга вашего сайта по каким либо причинам не могут «доточить БД» требуемой таблицей, а админпанель не доступна по определенным причинам. Поверьте, такое бывает.
Реальная ситуация – ночь, а рабочая табличка уже должна быть доступна к утру.
Что делать? Один из самых простых способов решить данную задачу – выполнить запрос к БД из кода на c#.
Итак, создаем новую страницу .aspx, или берем существующую.
Добавляем на странцу кнопку серверный контрол <asp:Button и подвязываем её на обработчик события CreateTable:
protected void CreateTable(object sender, EventArgs e)
{
using (SqlConnection con =
new SqlConnection(ConfigurationManager.
ConnectionStrings[“myConnectionString”].
ConnectionString))
{
string query = "CREATE TABLE Vendors" +
"(id UniqueIdentifier CONSTRAINT PKeyid PRIMARY KEY," +
"vendorName NVARCHAR(30),
vendorEmail NVARCHAR(30),
productCount INT,
isActive bit)";
SqlCommand sqlCom = new SqlCommand(query, con);
try
{
con.Open();
sqlCom.ExecuteNonQuery();
con.Close();
Result.Text = "Таблица создана";
}
catch { Result.Text = "Таблица не создана"; }
}
}
Метод очень прост.
Переменная query содержит инструкцию создания таблицы с 5 полями:
- Id – первичный ключ, тип Guid
- vendorName – имя заказчика, тип string
- vendorEmail – почта заказчика, тип string
- productCount – количество экземпляров продукта, тип int
- isActive – активный ли участник, тип bool
Выполнение запроса к БД происходит через обычный метод ExecuteNonQuery();
Если в ходе выполнения метода возникает exception, то мы ловим его в блоке catch.
Вот и все. Просто очень.