Доступ к базе данных C #: лучший способ использовать для получения данных - PullRequest
2 голосов
/ 19 декабря 2011

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

Но метод 1, кажется, делает намного больше в гораздо меньшем количестве кода.Конечно, его

  1. аккуратнее,
  2. лучше
  3. Легче читать / следовать
  4. и имеет такие функции, как преобразование DBNulls в ноль.Вместо того, чтобы делать это самому.
  5. Обрабатывает открытие и закрытие соединений / считывателей данных.

Не могу придумать каких-либо причин для использования метода 2 по сравнению с методом 1.

(Метод 2, возможно, мог иметь предложение using, но из-за большого количества кода он был помещен в отдельную функцию, которую нужно вызывать из другого wher, и, следовательно, закрывая ее, закрывал устройство чтения данных, делая данные недоступными.)

Во всяком случае, я серьезно думаю о том, чтобы вернуться назад и переключить весь мой веб-сервис на использование метода 1, поскольку он кажется намного лучше и удобнее в обслуживании.Кто-нибудь может предложить иначе?

Метод 1:

using (var db = Database.OpenConnectionString(Library.Properties.Settings.Default.dbConnString, "System.Data.SqlClient"))
        {
            Int32 AccNo = db.QuerySingle("SELECT AccNo FROM Tasks WHERE TaskID = " + TaskID);
        }

Метод 2:

        sqlComm = new SqlCommand();
        sqlCon = new SqlConnection();
        sqlComm.Connection = sqlCon;

        sqlCon.ConnectionString = global::Library.Properties.Settings.Default.dbConnString;
        sqlComm.CommandText = "SELECT AccNo FROM Tasks WHERE TaskID = " + TaskID;
        sqlCon.Open();
        SqlDataReader data = sqlComm.ExecuteReader();
        while (data.Read())
        {
            Int32 AccNo = (Int32)data["AccNo"];
        }
        sqlCon.Close();
        sqlComm.Dispose();
        if (data != null)
           data.Close();

Ответы [ 2 ]

9 голосов
/ 19 декабря 2011

Попробуйте использовать инфраструктуру сущностей

using (var context = new YourDatabaseEntities())
{
    var elements = (from c in context.YourTable where c.TaskId == taskId select c);
}
3 голосов
/ 19 декабря 2011

Метод 1 выглядит намного лучше, на мой взгляд.

У метода 2 есть несколько вещей, которые вы можете сделать, чтобы сократить код, но вы захотите использовать метод 2 только в том случае, если вы хотите лучше контролировать свое соединение.

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

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