Запросы бд на си шарп

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

MS Access и C# — работаем с базой данных из программы Windows Forms

Рассмотрим выполнение запросов SELECT, INSERT, UPDATE и DELETE к базе данных Microsoft Access из программы на языке C#, на примере проекта Windows Forms в Visual Studio. В конце статьи вы найдете исходники, а также видеоурок по данной теме.

Проектирование базы данных MS Access

Создадим в Microsoft Access базу данных Workers (рабочие) с одной таблицей Worker (рабочий).

Таблица содержит следующие столбцы:

  • w_id (идентификатор записи) — тип данных Счетчик;
  • w_name (имя) — тип данных Короткий текст;
  • w_position (должность) — тип данных Короткий текст;
  • w_salary (зарплата) — тип данных Числовой.

Схема базы данных MS Access для проекта на C#

Для корректной работы с базой данных MS Access с помощью языка C#, ее необходимо сохранить в формате с расширением .mdb

Сохранение БД MS Access в нужном формате для работы с ней на C#

Создание проекта Windows Forms в Visual Studio на языке C#

Создадим проект Windows Forms на C# и поместим на форму следующие компоненты:

TextBox, ListBox и пять кнопок Button.

Расположение элементов управления на форме Windows Forms для выполнения запросов к MS Access на C#

На макете формы в Visual Studio выполним двойные щелчки левой кнопкой мыши на всех кнопках, создав тем самым обработчики событий нажатия для каждой кнопки.

Читайте также:  Инициализация data class kotlin

Источник

Запросы бд на си шарп

Для выполнения запросов к базе данных SQLite применяется класс SqliteCommand , который представляет реализацию интерфейса System.Data.IDbCommand . Для создания объекта SqliteCommand можно использовать один из его конструкторов:

  • SqliteCommand()
  • SqliteCommand(String) : создает объект SqliteCommand, в конструктор которого передается выполняемое выражение SQL
  • SqliteCommand(String, SqliteConnection) : создает объект SqliteCommand, в конструктор которого передается выполняемое выражение SQL и используемое подключение к базе данных в виде объекта SqliteConnection
  • SqliteCommand(String, SqliteConnection, SqliteTransaction) : третий параметр представляет применяемую транзакцию в виде объекта SqliteTransaction

Альтернативным способом создания объекта SqliteCommand представляет метод CreateCommand90 класса SqliteConnection:

using (var connection = new SqliteConnection(«Data Source=usersdata.db»))

Для конфигурации объекта SqliteCommand можно использовать ряд его свойств, некоторые из них:

  • CommandText : хранит выполняемую команду SQL
  • CommandTimeout : хранит временной интервал в секундах, после которого SqliteCommand прекращает попытки выполнить команду. По умолчанию равен 30 секундам. Значение 0 представляет отстутсвие интервала.
  • Parameters : предствляет параметры команды
  • Connection : предоставляет используемое подключение SqliteConnection

Например, установим свойства подключения и выполняемой команды:

using (var connection = new SqliteConnection(«Data Source=usersdata.db»))

Чтобы выполнить команду, необходимо применить один из методов SqliteCommand:

  • ExecuteNonQuery : выполняет sql-выражение и возвращает количество измененных записей. Подходит для sql-выражений INSERT, UPDATE, DELETE, CREATE.
  • ExecuteReader() : выполняет sql-выражение и возвращает считанные из таблицы строки. Подходит для sql-выражения SELECT.
  • ExecuteScalar() : выполняет sql-выражение и возвращает одно скалярное значение, например, число. Подходит для sql-выражения SELECT в паре с одной из встроенных функций SQL, как например, Min, Max, Sum, Count.

Создание таблицы

Для создания базы данных применяется SQL-команда CREATE TABLE , после которой указывается имя создаваемой таблицы и в скобках определения столбцов.

Например, создадим таблицу «Users», которая будет иметь три столбца — _id (уникальный идентификатор), Name (имя), Age (возраст):

using System; using Microsoft.Data.Sqlite; namespace HelloApp < class Program < static void Main(string[] args) < using (var connection = new SqliteConnection("Data Source=usersdata.db")) < connection.Open(); SqliteCommand command = new SqliteCommand(); command.Connection = connection; command.CommandText = "CREATE TABLE Users(_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, Name TEXT NOT NULL, Age INTEGER NOT NULL)"; command.ExecuteNonQuery(); Console.WriteLine("Таблица Users создана"); >Console.Read(); > > >

После выполнения команды в базе данных можно будет найти таблицу Users:

Читайте также:  Groupby python как работает

Создание таблицы в базе данных SQLite в .NET Core и NET 6

Для просмотра бд SQLite можно использовать специальный инструмент — DB Browser for SQLite.

Добавление данных

Теперь добавим в выше созданную таблицу Users новый объект:

using System; using Microsoft.Data.Sqlite; namespace HelloApp < class Program < static void Main(string[] args) < using (var connection = new SqliteConnection("Data Source=usersdata.db")) < connection.Open(); SqliteCommand command = new SqliteCommand(); command.Connection = connection; command.CommandText = "INSERT INTO Users (Name, Age) VALUES ('Tom', 36)"; int number = command.ExecuteNonQuery(); Console.WriteLine($"В таблицу Users добавлено объектов: "); > Console.Read(); > > >

Для вставки объекта используется sql-выражение INSERT, которое имеет следующий синтаксис:

INSERT INTO название_таблицы (столбец1, столбец2, столбецN) VALUES ( значение1, значение2, значениеN)

В ранее созданной таблице Users определены три столбца — __id и Age, которые хранят целое число, и Name, который хранит строку. Поэтому соответственно мы добавляем для столбца Name значение ‘Tom’, а для столбца Age число 36.

Здесь метод ExecuteNonOuery() возвращает число затронутых строк (в данном случае добавленных в таблицу объектов). Хотя нам необязательно возвращать результат метода, но данный результат может использоваться в качестве проверки, что операция, в частности, добавление, прошла успешно.

После добавления данных мы сможем их увидеть через DB Browser for SQLite:

Добавление в БД SQLite через SqliteCommand в C# и .NET

Подобным образом можно добавить несколько объектов:

using System; using Microsoft.Data.Sqlite; namespace HelloApp < class Program < static void Main(string[] args) < string sqlExpression = "INSERT INTO Users (Name, Age) VALUES ('Alice', 32), ('Bob', 28)"; using (var connection = new SqliteConnection("Data Source=usersdata.db")) < connection.Open(); SqliteCommand command = new SqliteCommand(sqlExpression, connection); int number = command.ExecuteNonQuery(); Console.WriteLine($"В таблицу Users добавлено объектов: "); > Console.Read(); > > >

Обновление объектов

Для обновления применяется sql-команда UPDATE, которое имеет следующий синтаксис:

UPDATE название_таблицы SET столбец1=значение1, столбец2=значение2, столбецN=значениеN WHERE некоторый_столбец=некоторое_значение
using System; using Microsoft.Data.Sqlite; namespace HelloApp < class Program < static void Main(string[] args) < string sqlExpression = "UPDATE Users SET Age=20 WHERE Name='Tom'"; using (var connection = new SqliteConnection("Data Source=usersdata.db")) < connection.Open(); SqliteCommand command = new SqliteCommand(sqlExpression, connection); int number = command.ExecuteNonQuery(); Console.WriteLine($"Обновлено объектов: "); > Console.Read(); > > >

Здесь обновляется строка, в которой Name=Tom, то есть выше добавленный объект. Если в таблице будет несколько строк, у которых Name=Tom, то обновятся все эти строки.

Читайте также:  Python string to word list

Удаление

Удаление производится с помощью sql-выражения DELETE, которое имеет следующий синтаксис:

DELETE FROM таблица WHERE столбец = значение

Удалим, например, всех пользователей, у которых имя Tom:

using System; using Microsoft.Data.Sqlite; namespace HelloApp < class Program < static void Main(string[] args) < string sqlExpression = "DELETE FROM Users WHERE Name='Tom'"; using (var connection = new SqliteConnection("Data Source=usersdata.db")) < connection.Open(); SqliteCommand command = new SqliteCommand(sqlExpression, connection); int number = command.ExecuteNonQuery(); Console.WriteLine($"Удалено объектов: "); > Console.Read(); > > >

Во всех трех случаях фактически меняется только sql-выражение, а остальная логика остается неизменной. И мы также можем выполнять сразу несколько операций:

using System; using Microsoft.Data.Sqlite; namespace HelloApp < class Program < static void Main(string[] args) < Console.WriteLine("Введите имя:"); string name = Console.ReadLine(); Console.WriteLine("Введите возраст:"); int age = Int32.Parse(Console.ReadLine()); string sqlExpression = $"INSERT INTO Users (Name, Age) VALUES ('', )"; using (var connection = new SqliteConnection("Data Source=usersdata.db")) < connection.Open(); // добавление SqliteCommand command = new SqliteCommand(sqlExpression, connection); int number = command.ExecuteNonQuery(); Console.WriteLine($"Добавлено объектов: "); // обновление ранее добавленного объекта Console.WriteLine("Введите новое имя:"); name = Console.ReadLine(); sqlExpression = $"UPDATE Users SET Name='' WHERE Age="; command.CommandText = sqlExpression; number = command.ExecuteNonQuery(); Console.WriteLine($"Обновлено объектов: "); > Console.Read(); > > >
Введите имя: Tom Введите возраст: 36 Добавлено объектов: 1 Введите новое имя: Sam Обновлено объектов: 1

Источник

Оцените статью