Какие приемы кодирования вы использовали, чтобы не писать больше sql? - PullRequest
7 голосов
/ 04 февраля 2009

Этот вопрос был предложен Киралессой в Какой твой самый полезный трюк с sql, чтобы не писать больше sql? что мне интересно посмотреть, что придет с этим вопросом.

Еще раз, я не удерживаю репутацию от этого вопроса. Я жду ответов 7 дней, затем отмечаю это вики. Репутация, которую заработал вопрос, получает награду за этот вопрос.

Основные правила:

  • Хотя, безусловно, разумно писать код, переносить обработку из SQL в код для решения проблем с производительностью, на самом деле вопрос не в этом. Вопрос не ограничивается проблемами с производительностью. Цель состоит не столько в том, чтобы выполнить работу.

  • Сообщите эту концепцию, чтобы другие пользователи сказали: "Ого, я не знал, что вы можете это сделать".

  • Пример кода очень полезен, чтобы помочь людям, которые в основном изучают зрение.

  • Явно укажите, какой язык вы используете, и какой диалект SQL вы используете.

  • Поставьте себя на место читателей. Что бы им нужно было увидеть прямо на экране перед ними, это вызовет прозрение. Ваш ответ поможет читателю. Напишите это для них.

  • Внешние ссылки в порядке, если они появляются после примера. Внешние ссылки в качестве замены для реального ответа не являются.

Возможно, есть другие вещи, которые делают читателя приятнее, о которых я даже не думал. Будьте креативны. Поделитесь знаниями. Веселитесь, хвастаясь.

[РЕДАКТИРОВАТЬ] - Похоже, что в последнее время не было никакой активности 5 голосов = 50, так что есть награда, и она была wikified.

Ответы [ 11 ]

0 голосов
/ 09 февраля 2009

Я рекомендую создавать общие методы, ориентированные на задачу и использующие простые элементы SQL, без необходимости писать sql. Я использую Subsonic для доступа к данным в MS SQL. Однако вы можете сделать его не зависящим от базы данных, например, DAL. Эти примеры могут быть настроены на ORM или, тем не менее, вы получаете доступ к данным. Я бы порекомендовал создать статический класс, который сузит его до конкретной задачи.

Например, если у вас есть таблица данных для заполнения и вы знаете представление, таблицу, сохраненный процесс для ее заполнения, создайте функцию, аналогичную следующему коду c #:

public static void BindDataGridViewWhere(DataGridView dgv, string tablename, string selectList, string whereClause)
{
    Query qQuery = new Query(tablename);
    qQuery.SelectList = selectList;
    qQuery.WHERE(whereClause);
    DataSet dsDGV = qQuery.ExecuteDataSet();
    dgv.DataSource = dsDGV.Tables[0];
    dgv.RowHeadersVisible = false;
}

Затем, в init страницы или что-то в этом роде, простой однострочный вызов этого метода, передающий представление данных сетки с оператором where, что вы хотите отобразить и как в select, а также whereclause и вы связаны.

BindDataGridViewWhere (dgvCars, "tbl_Cars", "CarName", "Color, mdl as Model", "Color = 'blue'");

Это прекрасно работает для любого объекта, с которым вы часто связываетесь, такого как выпадающие списки, списки, таблицы данных и все остальное. Тогда для других, которые не подходят под эту модель, есть метод, который просто возвращает набор данных. Таким образом, если вам нужно взаимодействовать с ним перед его отображением, вы можете выполнить дополнительную бизнес-логику и т. Д.

Мне нравится этот подход, потому что, если вы хотите переключить платформы данных, у вас есть 1 место для внесения изменений. Таким способом вы можете создать экран очень быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...