Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / SqlParameterCollection / 19 сообщений из 19, страница 1 из 1
12.04.2016, 12:17
    #39213457
pf
pf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Как создать коллекцию параметров . не привязанную к команде и добавить в нее параметры?

Делаю:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
SqlParameterCollection sqlParams = default(SqlParameterCollection);

SqlParameter param1 = new SqlParameter();
param1.DbType = DbType.Int32;
param1.ParameterName = "@CityID";
param1.Value = intCidyID;

sqlParams.Add(param1);             - здесь исключение : Ссылка на объект не указывает на экземпляр объекта



Что не так?
...
Рейтинг: 0 / 0
12.04.2016, 12:23
    #39213464
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Код: c#
1.
SqlParameterCollection sqlParams = new SqlParameterCollection();



default
...
Рейтинг: 0 / 0
12.04.2016, 13:25
    #39213549
pf
pf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Так пробовал - пишет. что не определен конструктор
...
Рейтинг: 0 / 0
12.04.2016, 13:58
    #39213616
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
List<SqlParameter> sp = new List<SqlParameter>()
{
    new SqlParameter() {ParameterName = "@CityID", SqlDbType = SqlDbType.Int, Value= intCidyID}
};

                SqlCommand cmd = new SqlCommand(spName, con);
                cmd.CommandType = CommandType.StoredProcedure;

                if (sp.Count > 0)
                {
                    foreach (SqlParameter param in sp)
                        cmd.Parameters.Add(param);
                }

                ret = cmd.ExecuteNonQuery();
...
Рейтинг: 0 / 0
12.04.2016, 14:00
    #39213619
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
default - для ссылочных типов - null.
Для чего они не должны быть привязаны к SqlCommand?
...
Рейтинг: 0 / 0
12.04.2016, 14:22
    #39213656
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Konst_One
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
List<SqlParameter> sp = new List<SqlParameter>()
{
    new SqlParameter() {ParameterName = "@CityID", SqlDbType = SqlDbType.Int, Value= intCidyID}
};

                SqlCommand cmd = new SqlCommand(spName, con);
                cmd.CommandType = CommandType.StoredProcedure;

                if (sp.Count > 0)
                {
                    foreach (SqlParameter param in sp)
                        cmd.Parameters.Add(param);
                }

                ret = cmd.ExecuteNonQuery();



Параметр может быть привязан только к одной команде

См. приложенный рисунок.

Разве что после выполнения команды cmd.Parameters.Clear() сделать.

А так да, было бы хорошо иметь непривязанную ни к чему коллекцию параметров. Но увы
...
Рейтинг: 0 / 0
12.04.2016, 14:25
    #39213659
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
cmd1 забыли указать , что это процедура

Код: c#
1.
cmd1.CommandType = ... 
...
Рейтинг: 0 / 0
12.04.2016, 14:26
    #39213660
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
и коллекция параметров уже была передана в другую процедуру. делайте новую
...
Рейтинг: 0 / 0
12.04.2016, 14:29
    #39213663
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Konst_Onecmd1 забыли указать , что это процедура

Код: c#
1.
cmd1.CommandType = ... 


В данном случае неважно. Ошибка бы вылетела при выполнении команды
...
Рейтинг: 0 / 0
12.04.2016, 14:37
    #39213670
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Cat2А так да, было бы хорошо иметь непривязанную ни к чему коллекцию параметров. Но увы
Для чего?
...
Рейтинг: 0 / 0
12.04.2016, 14:44
    #39213679
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
если вам нужна одна коллекция для нескольких процедур, то сделайте свой класс описания параметра и сделайте метод который будет из этого описания собирать новую коллекцию и передавать в параметры процедуры

Код: 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.
List<mySqlParameter> sp = new List<mySqlParameter>()
{
    new mySqlParameter() {ParameterName = "@CityID", SqlDbType = SqlDbType.Int, Value= intCidyID}
};

                SqlCommand cmd = new SqlCommand(spName, con);
                cmd.CommandType = CommandType.StoredProcedure;

                if (sp.Count > 0)
                {

                    foreach (mySqlParameter param in sp)
                        cmd.Parameters.Add( new SqlParameter() {ParameterName = param.ParameterName, SqlDbType = param.SqlDbType, Value= param.Value});
                }


                SqlCommand cmd1 = new SqlCommand(spName, con);
                cmd1.CommandType = CommandType.StoredProcedure;

                if (sp.Count > 0)
                {

                    foreach (mySqlParameter param in sp)
                        cmd1.Parameters.Add( new SqlParameter() {ParameterName = param.ParameterName, SqlDbType = param.SqlDbType, Value= param.Value});
                }


...
...
Рейтинг: 0 / 0
12.04.2016, 14:49
    #39213686
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
ЕвгенийВCat2А так да, было бы хорошо иметь непривязанную ни к чему коллекцию параметров. Но увы
Для чего?
Есть куча хранимок у которых два параметра: "@Id" и "@Value". Можно бы было параметры простым присваиванием создавать
...
Рейтинг: 0 / 0
12.04.2016, 14:54
    #39213695
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
это:
Код: c#
1.
 cmd1.Parameters.Add( new SqlParameter() {ParameterName = param.ParameterName, SqlDbType = param.SqlDbType, Value= param.Value});



можно заменить методом:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
 cmd1.Parameters.Add(getSQLParam(param));
...


public SqlParameter getSQLParam(mySqlParameter p) {
SqlParameter ret = new SqlParameter() {ParameterName = p.ParameterName, SqlDbType = p.SqlDbType, Value= p.Value};
return ret;
}
...
Рейтинг: 0 / 0
12.04.2016, 15:11
    #39213732
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Cat2Есть куча хранимок у которых два параметра: "@Id" и "@Value". Можно бы было параметры простым присваиванием создавать
А потом искать, почему параметры какие то левые:)
P. S. Если гора не идет к Магомеду, тогда Магомед меняет значение свойства CommandText у SqlCommand.
...
Рейтинг: 0 / 0
12.04.2016, 15:33
    #39213768
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
Код: c#
1.
2.
cmd.Parameters.Clear();
cmd.Parameters.AddRange(SqlParamters[] values);
...
Рейтинг: 0 / 0
12.04.2016, 16:00
    #39213815
pf
pf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
ЕвгенийВdefault - для ссылочных типов - null.
Для чего они не должны быть привязаны к SqlCommand?


Чтобы потом коллекцию параметров передать в функцию , которая выполнит следующее:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandText = strSQL;
sqlCmd.Connection = cnConnection;
if (sqlparArray != null)
{
    foreach (System.Data.SqlClient.SqlParameter param in sqlparArray)
    {
        sqlCmd.Parameters.Add(param);
    }
}            
sqlCmd.ExecuteNonQuery();



Где sqlparArray - коллекция переданная параметров в функцию , так же сюда будут передаваться strSQL - имя процедуры, и экземпляр соединения - cnConnection
...
Рейтинг: 0 / 0
12.04.2016, 16:04
    #39213820
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
выше уже готовое почти решение выложил, что-то не понятно?
...
Рейтинг: 0 / 0
12.04.2016, 17:31
    #39213934
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
pfЧтобы потом коллекцию параметров передать в функцию , которая выполнит следующее:

Чем не устраивает банальный Array или List?
...
Рейтинг: 0 / 0
12.04.2016, 18:36
    #39213997
pf
pf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SqlParameterCollection
ЕвгенийВpfЧтобы потом коллекцию параметров передать в функцию , которая выполнит следующее:

Чем не устраивает банальный Array или List?

Уже сделал - через:

Код: c#
1.
SqlParameter[] sqlParams = new SqlParameter[4];



И вперед ....
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / SqlParameterCollection / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]