crazymouse2009
1

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

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

Студворк — интернет-сервис помощи студентам
Всем привет.

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

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

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

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

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

4
Эксперт .NET
17438 / 12830 / 3361
Регистрация: 17.09.2011
Сообщений: 21,108
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
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
10.09.2012, 15:10 3
передавать параметры в форме какой-нибудь коллекции. Правда, как потом с ними манипулировать, то бишь строить запрос с их использованием, не совсем понятно
0
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
11.09.2012, 19:03 5
Спасибо, а ведь это, наверное, самый очевидный вариант был - передавать тремя массивами: имя параметра, значение и тип. Но что-то не додумался сразу. В результате сделал так:

C#
1
2
3
4
5
6
void Foo(params SqlParameter[] prm)
{
...
SqlParameter.AddRange()
...
}
11.09.2012, 19:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2012, 19:03
Помогаю со студенческими работами здесь

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru