Загрузка данных
using System;
using System.Data;
using System.Data.SqlClient;
namespace bred
{
public static class DatabaseManager
{
private static readonly string MasterConnectionString = @"Server=(localdb)\MSSQLLocalDB;Integrated Security=true;";
public static readonly string LiriDBConnectionString = @"Server=(localdb)\MSSQLLocalDB;Integrated Security=true;Database=LiriDB;";
public static void InitializeDatabase()
{
CreateDatabaseIfNotExists("LiriDB");
CreateTablesAndFillData();
}
private static void CreateDatabaseIfNotExists(string dbName)
{
using (SqlConnection connection = new SqlConnection(MasterConnectionString))
{
connection.Open();
string checkDbQuery = $"SELECT database_id FROM sys.databases WHERE Name = '{dbName}'";
using (SqlCommand cmd = new SqlCommand(checkDbQuery, connection))
{
object result = cmd.ExecuteScalar();
if (result == null)
{
string createDbQuery = $"CREATE DATABASE [{dbName}]";
using (SqlCommand createCmd = new SqlCommand(createDbQuery, connection))
createCmd.ExecuteNonQuery();
}
}
}
}
private static void CreateTablesAndFillData()
{
using (SqlConnection conn = new SqlConnection(LiriDBConnectionString))
{
conn.Open();
// Таблица Employees
string createEmployees = @"
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='Employees' AND xtype='U')
CREATE TABLE Employees (
ID INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(50) NOT NULL,
Position NVARCHAR(50) NOT NULL,
Salary DECIMAL(18,2) NOT NULL,
City NVARCHAR(50) NOT NULL
)";
using (SqlCommand cmd = new SqlCommand(createEmployees, conn))
cmd.ExecuteNonQuery();
// Таблица Products
string createProducts = @"
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='Products' AND xtype='U')
CREATE TABLE Products (
ID INT IDENTITY(1,1) PRIMARY KEY,
ProductName NVARCHAR(50) NOT NULL,
Price DECIMAL(18,2) NOT NULL,
Quantity INT NOT NULL,
Category NVARCHAR(50) NOT NULL
)";
using (SqlCommand cmd = new SqlCommand(createProducts, conn))
cmd.ExecuteNonQuery();
// Таблица Books
string createBooks = @"
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='Books' AND xtype='U')
CREATE TABLE Books (
ID INT IDENTITY(1,1) PRIMARY KEY,
Title NVARCHAR(100) NOT NULL,
Author NVARCHAR(50) NOT NULL,
Year INT NOT NULL,
Pages INT NOT NULL
)";
using (SqlCommand cmd = new SqlCommand(createBooks, conn))
cmd.ExecuteNonQuery();
// Таблица Customers
string createCustomers = @"
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='Customers' AND xtype='U')
CREATE TABLE Customers (
ID INT IDENTITY(1,1) PRIMARY KEY,
CustomerName NVARCHAR(50) NOT NULL,
Address NVARCHAR(100) NOT NULL,
Phone NVARCHAR(20) NOT NULL,
Email NVARCHAR(50) NOT NULL
)";
using (SqlCommand cmd = new SqlCommand(createCustomers, conn))
cmd.ExecuteNonQuery();
// Полная перезапись данных (очищаем и заливаем заново)
using (SqlCommand clear = new SqlCommand("DELETE FROM Employees; DELETE FROM Products; DELETE FROM Books; DELETE FROM Customers;", conn))
clear.ExecuteNonQuery();
// Заполнение Employees
for (int i = 1; i <= 10; i++)
{
string insert = $"INSERT INTO Employees (Name, Position, Salary, City) VALUES (N'Сотрудник{i}', N'Должность{i}', {1000 + i * 100}, N'Город{i}')";
using (SqlCommand ins = new SqlCommand(insert, conn))
ins.ExecuteNonQuery();
}
// Заполнение Products
for (int i = 1; i <= 10; i++)
{
string insert = $"INSERT INTO Products (ProductName, Price, Quantity, Category) VALUES (N'Товар{i}', {i * 100}, {i * 5}, N'Категория{i}')";
using (SqlCommand ins = new SqlCommand(insert, conn))
ins.ExecuteNonQuery();
}
// Заполнение Books
for (int i = 1; i <= 10; i++)
{
string insert = $"INSERT INTO Books (Title, Author, Year, Pages) VALUES (N'Книга{i}', N'Автор{i}', {2000 + i}, {200 + i * 10})";
using (SqlCommand ins = new SqlCommand(insert, conn))
ins.ExecuteNonQuery();
}
// Заполнение Customers
for (int i = 1; i <= 10; i++)
{
string insert = $"INSERT INTO Customers (CustomerName, Address, Phone, Email) VALUES (N'Клиент{i}', N'Адрес{i}', N'+7-000-000-00{i}', N'client{i}@example.com')";
using (SqlCommand ins = new SqlCommand(insert, conn))
ins.ExecuteNonQuery();
}
}
}
public static DataTable GetDataTable(string tableName)
{
using (SqlConnection conn = new SqlConnection(LiriDBConnectionString))
{
conn.Open();
string query = $"SELECT * FROM {tableName}";
using (SqlDataAdapter adapter = new SqlDataAdapter(query, conn))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
}
}