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

Работа с БД в отдельном классе. Как обеспечить произвольное количество передаваемых параметров

10.09.2012, 14:52. Просмотров 852. Ответов 4
Метки нет (Все метки)

Всем привет.

Вот начал знакомиться с SQL и C# и появился у меня вопрос. Ситуация следующая - хочу все методы работы с БД вынести в отдельный класс. Использую параметризированные запросы, соответственно почти все обращения к БД хотя и похожи по структуре, имеют разное число параметров. Что делать? Не перегружать же метод по числу возможных вариантов...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2012, 14:52
Ответы с готовыми решениями:

Работа с БД в отдельном классе
Доброго времени суток, я новичок в С#, хотел бы узнать как вызвать из класса...

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

Есть ли какие-то ограничения на количество или объем передаваемых сервлету параметров из HTML?
Hi, ALL! Есть ли какие-то ограничения в кол-ве или объеме передаваемых...

Можно ли в Java определить количество параметров, передаваемых в тэге <applet> в HTML-коде?
Можно ли в Java определить количество параметров, передаваемых в тэге &lt;applet&gt;...

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

4
kolorotur
Эксперт .NET
11108 / 9053 / 2282
Регистрация: 17.09.2011
Сообщений: 15,594
Завершенные тесты: 1
10.09.2012, 15:05 2
C#
1
2
3
4
5
6
7
8
9
void Foo(params object[] args)
{
}
 
Foo();
Foo("Hello");
Foo("Hello", "World");
Foo("Hello", "World", 42);
Foo("Hello", "World", 42, DateTime.Now);
И так далее.
1
Besnywka
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
10.09.2012, 15:10 3
передавать параметры в форме какой-нибудь коллекции. Правда, как потом с ними манипулировать, то бишь строить запрос с их использованием, не совсем понятно
0
devlog
1 / 1 / 0
Регистрация: 11.09.2012
Сообщений: 7
11.09.2012, 14:49 4
Пример правда для Firebird но его легко переделать под MSSQL

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
public static void Update(string UpdateCommand, string[] param, string[] val, FbDbType[] type,string ID)
        {
            FbDataAdapter sa = new FbDataAdapter();
            sa.UpdateCommand = new FbCommand(UpdateCommand, fbBD);
            sa.UpdateCommand.Parameters.Add("@id", FbDbType.Text);
            for (int i = 0; i <= param.Length - 1; i++)
            { sa.UpdateCommand.Parameters.Add(param[i], type); }
            sa.UpdateCommand.Parameters[0].Value =ID;
            for (int i = 1; i <= val.Length ; i++)
            { sa.UpdateCommand.Parameters[i].Value = val[i-1]; }
 
 
            
            try
            {
                fbBD.Open();
                sa.UpdateCommand.ExecuteNonQuery();
            }
            catch (FbException s)
            {
                MessageBox.Show(s.Message);
            }
            finally
            {
                fbBD.Close();
                sa.Dispose(); 
            }
        }
а применение что то типо этого
C#
1
2
3
4
5
6
7
8
9
10
 string[] val = new string[2];
                string[] prm = new string[2];
                FbDbType[] type = new FbDbType[2];
                val[0] = parrent;
                val[1] = textBox1.Text;
                prm[0] = "@parrent_id";
                prm[1] = "@naim";
                type[0] = FbDbType.Text;
                type[1] = FbDbType.Text;
                FB.Update("update " + table + " set parrent_id=@parrent_id , naim=@naim where id=@id", prm, val, type, id);
0
crazymouse2009
0 / 0 / 0
Регистрация: 07.09.2012
Сообщений: 2
11.09.2012, 19:03 5
Спасибо, а ведь это, наверное, самый очевидный вариант был - передавать тремя массивами: имя параметра, значение и тип. Но что-то не додумался сразу. В результате сделал так:

C#
1
2
3
4
5
6
void Foo(params SqlParameter[] prm)
{
...
SqlParameter.AddRange()
...
}
0
11.09.2012, 19:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 19:03

Работа с веб-камерой в отдельном классе, а не форме
Скачал библиотечку для работы с веб-камерой отсюда:...

Можно ли как-то менять 9-ый бит передаваемых данных без изменения остальных параметров порта?
Здравствуйте, уважаемые коллеги! У меня следующий вопрос: есть устройство,...

Как организовать конвертирование в отдельном классе?
По шапке, имеется такой код: foreach (var queryObj in Getmem) { double...


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

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

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