Философия dbFacade. Часть 2.2

И немного рекламы: интернет-магазин орбитрек

Продолжаем разговор… Для управления данными в dbFacade предусмотрено несколько групп методов:


Методам Insert и Update в качестве аргументов можно передавать объект класса ParametersCollection. Объект этого класса содержит список параметров, которые разбираются и используются при выполнении запроса к базе данных. Следующий пример демонстрирует как правильно задавать параметры:

decimal minSalary = 10000;
dbFacade db = new dbFacade
ParametersCollection parameters = new ParametersCollection();
parameters.Add("StartDate", DateTime.Now, DbType.DateTime);
parameters.Add("MinSalary", minSalary, DbType.Decimal);
db.Insert(“myTable", parameters);

И далее, этот объект передается в Insert или Update. Метод Add принимает: название поля (колонки, которая будет обновлена или в нее выполнится вставка нового значения), значение и тип значения. Все возможные типы можно найти в DbType.

Все остальные методы — Delete, Execute и т.д. (везде, где вы встретите ParametersCollection, кроме как Insert и Update), также могут принимать ParametersCollection, но принцип немного отличается.

decimal minSalary = 10000;
dbFacade db = new dbFacade
ParametersCollection parameters = new ParametersCollection();
parameters.Add(@date", DateTime.Now, DbType.DateTime);
parameters.Add("@minSalary", minSalary, DbType.Decimal);
DataTable dt = db.Execute(“SELECT * FROM myTable WHERE StartDate = @date AND MinSalary = @minSalary", parameters);

Использование ParametersCollection поможет избавиться от ошибок при создании запроса, а при использовании с SQLite, вам не потребуется конвертировать дату в формат ГОД-МЕСЯЦ-ДЕНЬ.
Чтобы обнулить список параметров – выполняйте метод parameters.Clear().

Для составления запроса можно использовать класс Select. Этот класс написан для удобства формирования запроса выборки. Select уже содержит в себе основные операторы, которые используются при выборке – SELECT, FROM, WHERE, JOIN, ORDER BY и т.д.

Запрос можно составить следующим образом (пример из реального проекта):

Select select = new Select()
.From("GLMonth as a")
.Columns("a.id, user_id, fromSQ, comments, [Date]")
.Join("GlMonthInfo as b", "monthid = b.id", SQLJoinTypes.INNER_JOIN);

Как видите, используются одноименные методы для составления запроса. Сам запрос можно получить из поля SelectCommand. В каком порядке использовать методы, значения не имеет. Предыдущий пример вполне можно описать и так.

Select select = new Select();
select.From("GLMonth as a");
select.Join("GlMonthInfo as b", "monthid = b.id", SQLJoinTypes.INNER_JOIN).
Columns("a.id, user_id, fromSQ, comments, [Date]");

После создания объекта Select передаем его в Execute. Также Select можно использовать в связке ParametersCollection.

Вот еще один, но более сложный пример, демонстрирующий работу с подзапросами:

Select select = new Select()
	.From("Кадры_Состав_Должности")
	.Columns("Код_отдела")
	.Where(string.Format("Номер_карточки = {0} AND Назначение_дата = ({1})", cardNum, new Select()
	.From("Кадры_Состав_Должности")
	.Columns("MAX(Назначение_дата)")
	.Where(string.Format("Назначение_дата <= GETDATE() AND Номер_карточки = {0}",cardNum)).SelectCommand));

Примеры работы со всеми методами класса dbFacade я опишу в следующей статье. Удачного кодинга.

Популярность: 8%

Теги: ,

Если у вас возникли вопросы, вы можете оставить их в комментариях

Оставить комментарий

(обязательно)

(обязательно)