Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
NatalieZ
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 8
1

Класс для работы с базой SQL Server

07.04.2015, 14:37. Просмотров 1248. Ответов 2
Метки нет (Все метки)

Добрый день. У меня вопрос к знающим людям. Пишу свой класс для работы с базой данных SQL Server в котором есть метод, который возвращает DataSet
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
        private static DataSet DataSetFill(string commandTextOrProcedureName, CommandType cmdType, params SqlParameter[] parameters)
        {
            int rowCount = 0;
            SqlConnection connection = null;
            SqlCommand command = null;
            DataSet dataSet = null;
            SqlDataAdapter dataAdapter = null;
            try
            {
                connection = new SqlConnection(conString);
                command = new SqlCommand(commandTextOrProcedureName, connection);
                command.CommandType = cmdType;
                if (parameters != null)
                {
                    command.Parameters.AddRange(parameters);
                }
                connection.Open();
                dataSet = new DataSet();
                dataAdapter = new SqlDataAdapter();
                dataAdapter.SelectCommand = command;
                rowCount = dataAdapter.Fill(dataSet);
                IsExecuted = true;
            }
            catch (Exception e)
            {
                ShowError(e.ToString());
            }
            finally
            {
                if (connection != null)
                {
                    connection.Close(); connection.Dispose();
                }
                if (command != null)
                {
                    command.Dispose();
                }
                if (dataAdapter != null)
                {
                    dataAdapter.Dispose();
                }
            }
            return dataSet;
        }
Хочу добавить метод который будет возвращать DataTable. Вопрос в том как его лучше реализовать.
1 способ (через вызов предыдущего метода возвращающего DataSet):
C#
1
2
3
4
5
6
7
8
9
10
        public static DataTable CommandDataTableFill(string commandText, params SqlParameter[] parameters)
        {
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            ds = DataSetFill(commandText, CommandType.Text, parameters);
            if (ds.Tables.Count > 1)
                return dt = ds.Tables[0];
            else
                return dt;
        }
2 способ (аналог метода с DataSet, только возвращает DataTable) :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
        private static DataTable DataTableFill(string commandTextOrProcedureName, CommandType cmdType, params SqlParameter[] parameters)
        {
            int rowCount = 0;
            SqlConnection connection = null;
            SqlCommand command = null;
            DataTable dataTable = null;
            SqlDataAdapter dataAdapter = null;
            try
            {
                connection = new SqlConnection(conString);
                command = new SqlCommand(commandTextOrProcedureName, connection);
                command.CommandType = cmdType;
                if (parameters != null)
                {
                    command.Parameters.AddRange(parameters);
                }
                connection.Open();
                dataTable = new DataTable();
                dataAdapter = new SqlDataAdapter();
                dataAdapter.SelectCommand = command;
                rowCount = dataAdapter.Fill(dataTable);
                IsExecuted = true;
            }
            catch (Exception e)
            {
                ShowError(e.ToString());
            }
            finally
            {
                if (connection != null)
                {
                    connection.Close(); connection.Dispose();
                }
                if (command != null)
                {
                    command.Dispose();
                }
                if (dataAdapter != null)
                {
                    dataAdapter.Dispose();
                }
            }
            return dataTable;
        }
Не будет ли второй способ так сказать копипастом метода DataSetFill (отличия только в типе возвращаемого объекта и одной строке кода).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2015, 14:37
Ответы с готовыми решениями:

Настройка SQL Server 2008 для работы с SQL Server Management Studio
Доброго времени суток. Подскажите пожалуйста, что нужно сделать для того, чтобы...

Промежуточный класс для реализации методов работы с базой данных.
Кто-нить писал промежуточный класс для реализации методов работы с базой...

Программный модуль для работы с базой данных на sql workbanch
Здравствуйте, нужна программа для подключения к БД на sql workbanch(считывание,...

Многопользовательское приложение для работы с БД SQL Server
Собственно проблема в том, что мне нужно 3 вида пользователя: Админ, Редактор...

Нет соединения с базой (SQL server и VS)
Здравствуйте! Кто знает, прошу помочь разобраться. При работе программы выдает...

2
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
08.04.2015, 04:41 2
Цитата Сообщение от NatalieZ Посмотреть сообщение
Хочу добавить метод который будет возвращать DataTable. Вопрос в том как его лучше реализовать.
Лично я бы проголосовал за второй способ, только с одной маленькой поправкой: после создания метода DataTableFill вторым способом вам нужно выделить мышкой полностью метод DataSetFill и удалить его ко всем чертям. Ибо при наличии метода, который будет возвращать DataTable, нафиг не нужен метод, который будет возвращать ту же DataTable, только обернутую в индивидуальный DataSet. А если и понадобиться, то его лучше сделать так:
C#
1
2
3
4
5
6
private static DataSet DataSetFill(string commandTextOrProcedureName, CommandType cmdType, params SqlParameter[] parameters)
{
    DataSet dataSet = new DataSet();
    dataSet.Tables.Add(DataTableFill(commandText, CommandType.Text, parameters));
    return dataSet;
}
Но никак не наоборот. Ибо копипаст - это зло, как с точки зрения раздувания код, так и с точки зрения его дальнейшего сопровождения.
2
NatalieZ
0 / 0 / 0
Регистрация: 13.10.2014
Сообщений: 8
08.04.2015, 07:52  [ТС] 3
Большое спасибо за помощь, я так и сделаю!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2015, 07:52

Работа с базой данных MS SQL Server 2008 r2 на C#
Подскажите плиз создала БД в sql sever через менеджмент студио. написала...

Программа для работы с БД, используя ADO.NET ( сервер БД - MS SQL Server), открывать через браузер
Помогите разобраться, я не могу понять как программа должна открываться через...

Ищу готовое приложение на C# с базой данных на Access или SQL Server
Добрый день! У кого есть готовый база данных, реализованное на C# а база на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru