Как я соединяюсь с базой данных SQL от C#?

Приложения, которым разделили доменную логику от логики хранения данных, адаптируемы к любому виду источника данных (база данных или иначе) или UI (сеть или окна (или Linux и т.д.)) приложение.

Ваш в значительной степени всунутый Ваша база данных, которая не плоха, если Ваш с компанией, которая удовлетворена текущей системой баз данных Ваше использование. Однако, потому что базы данных развивают сверхурочное время могла бы быть новая система баз данных, которая является действительно аккуратной и новой, который Ваша компания хочет использовать. Что, если они хотели переключиться на метод веб-сервисов доступа к данным (как Сервис Ориентируемая архитектура когда-то делает). Вам, возможно, придется портировать Ваши хранимые процедуры повсеместно.

Также доменные логические краткие обзоры далеко UI, который может быть более важным в больших сложных системах, которые имеют когда-либо развитие UIs (особенно, когда они постоянно ищут больше клиентов).

кроме того, в то время как я соглашаюсь, что нет никакого категорического ответа на вопрос хранимых процедур по сравнению с доменной логикой. Я нахожусь в доменном логическом лагере (и я думаю, что они побеждают со временем), потому что я полагаю, что тщательно продуманные хранимые процедуры более трудно поддержать, чем тщательно продуманная доменная логика. Но это - целые другие дебаты

19
задан Andrew Diamond 5 December 2017 в 19:55
поделиться

7 ответов

В отличие от того, что опубликовали другие, вы не можете использовать функции min () / max () для эта проблема, поскольку эти функции не понимают структуру данных (массив), которые передаются. Эти функции работают только для элементов скалярного массива.


BEGIN EDIT

Причина использования min () и max () , кажется, дают правильный ответ. Это связано с преобразованием типов в целые числа, что является неопределенным поведением :

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

Мое утверждение выше о приведении типов было неверным. На самом деле min () и max () действительно работают с массивами, но не так, как они нужны OP. При использовании min () и max () с несколькими массивами или массивом массивов элементы сравниваются элемент за элементом слева направо:

$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)
/*
 * first element compared to first element: 2 == 2
 * second element compared to second element: 4 < 5
 * first array is considered the min and is returned
 */

В переводе на проблему OP это показывает причина, по которой прямое использование min () и max () , кажется, дает правильный результат. Первыми элементами массивов являются значения id , поэтому min () и max () будут сравнивать их первыми,

22
ответ дан 30 November 2019 в 02:48
поделиться

Объект SqlConnection

создан для этого.

Например:

SqlConnection conn = new SqlConnection(
    "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"); 

или

SqlConnection conn = new SqlConnection(
"Data Source=DatabaseServer; Initial Catalog=Northwind; User ID=YourUserID; Password=YourPassword");

conn.Open(); // opens the database connection

Изменить:

После выполнения всех ваших действий вы должны закрыть соединение с помощью

conn.Close();

Источник данных : идентифицирует сервер. Это может быть локальный компьютер, доменное имя компьютера или IP-адрес.

Исходный каталог : имя базы данных.

Встроенная безопасность : Установите значение SSPI, чтобы установить соединение с пользователем для входа в Windows

ID пользователя : имя пользователя, настроенное в SQL Server.

Пароль : пароль, соответствующий идентификатору пользователя SQL Server.

18
ответ дан 30 November 2019 в 02:48
поделиться

Для подключения к SQL Server Express вам не потребуется ничего, кроме System.Data , которая является стандартной сборкой .NET. Просто используйте классы SqlXXX , и все будет готово.

Однако писать обычный код ADO.NET очень утомительно, поэтому очень часто используют ORM или менее тяжелый преобразователь набора результатов, такой как как BLToolkit .

И, наконец, рассмотрите возможность использования SQL Server CE. Это полностью ACID-совместимый однофайловый встроенный механизм базы данных, который поддерживает практически все функции, которые вы можете ожидать от СУБД SQL.

4
ответ дан 30 November 2019 в 02:48
поделиться

Для того же можно использовать пространство имен ADO.Net и System.Data.SqlClient. Я посоветую вам использовать Entities framework (ORM). Ниже приведены ссылки для обзора Entity Framework

http://thedatafarm.com/LearnEntityFramework/tutorials/creating-an-ado-net-entity-framework-entity-data-model/

http: // thedatafarm .com / LearnEntityFramework / tutorials / use-an-entity-framework-entity-as-a-winforms-data-source /

1
ответ дан 30 November 2019 в 02:48
поделиться

Я бы порекомендовал использовать Корпоративную библиотеку Microsoft Patterns & Practices . Вы могли бы специально использовать Блок приложения доступа к данным .

Выдержка из MSDN:

Блок приложения доступа к данным предоставляет следующие преимущества:

  • Он использует функциональность, предоставляемую ADO.NET 2.0, и с его помощью вы можете использовать функциональность ADO.NET вместе с функциональность блока приложения.
  • Это снижает потребность в написании шаблонного кода для выполнения стандартных задач.
  • Это помогает поддерживать согласованные методы доступа к данным, как в рамках приложения и в масштабе всего предприятия.
  • Это уменьшает трудности при изменении типа базы данных.
  • Это освобождает разработчиков от изучения различных моделей программирования для разных типов баз данных.
  • Это сокращает объем кода, который разработчики должны писать при переносе приложения к разным типам базы данных.

Я использовал этот метод в течение многих лет, и до сих пор он был очень успешным. Удачи!

1
ответ дан 30 November 2019 в 02:48
поделиться

В настоящее время самый простой способ подключиться к базе данных и выполнять запросы в C # это LinqToSQL . Это избавит вас от много головной боли по сравнению с использованием ADO-соединений "старой школы".

1
ответ дан 30 November 2019 в 02:48
поделиться

Конечно, вы можете просто использовать классы в System.Data.SqlClient, хотя большинство людей будет использовать ORM. Я использую LLBLGen Pro .

0
ответ дан 30 November 2019 в 02:48
поделиться