powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataSet и SQL Server
54 сообщений из 54, показаны все 3 страниц
DataSet и SQL Server
    #38044555
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как лучше всего записывать данные из DataTable в sql-ю базу

Есть база например Excel
таблица dbo.Excel - поля id, name1, name2

Хранимая процедура

ALTER PROCEDURE InsertExcel
@name1 nvarchar(50),
@name2 nvarchar(50)
AS
BEGIN
INSERT INTO dbo.Excel ([name1], [name2]) VALUES (@name1, @name2)
DECLARE @id int
SET @id = scope_identity()
END

В программе я считываю данные из Excel анализирую и питаюсь записать их в базу

DataSet excelDataSet = new DataSet();

//загрузка из excel в 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.
using (SqlConnection sqlConn = new SqlConnection(conn))
{
String store = "InsertExcel";

SqlCommand cmd = new SqlCommand(store, sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
sqlConn.Open();


//А вот здесь я хотел пройтись циклом и записать данные в базу
foreach (DataRow row in excelDataSet.Tables[0].Rows)
                {
                    cmd.Parameters.Add("@name1", row[0].ToString());
                    cmd.Parameters.Add("@name2", row[1].ToString());

                    SqlParameter name1 = new SqlParameter("@name1", SqlDbType.NVarChar, 50);
                    SqlParameter name2 = new SqlParameter("@name2", SqlDbType.NVarChar, 50);

                    cmd.ExecuteNonQuery();
                }
                
                sqlConn.Close();
}



но мне выпадает ошибка см. скрин

Может это и глупо но как из DataSet(DataTable) можна записывать данные в базу?

Спасибо.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38044603
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Как лучше всего записывать данные из DataTable в sql-ю базу
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
using (SqlConnection sqlConn = new SqlConnection(conn))
{
String store = "InsertExcel";

SqlCommand cmd = new SqlCommand(store, sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
sqlConn.Open();


//А вот здесь я хотел пройтись циклом и записать данные в базу
foreach (DataRow row in excelDataSet.Tables[0].Rows)
                {
                    cmd.Parameters.Add("@name1", row[0].ToString());
                    cmd.Parameters.Add("@name2", row[1].ToString());

                    SqlParameter name1 = new SqlParameter("@name1", SqlDbType.NVarChar, 50);
                    SqlParameter name2 = new SqlParameter("@name2", SqlDbType.NVarChar, 50);

                    cmd.ExecuteNonQuery();
                }
                
                sqlConn.Close();
}



но мне выпадает ошибка см. скрин

Может это и глупо но как из DataSet(DataTable) можна записывать данные в базу?

Спасибо.Потому и выпадает, что Вы в каждой итерации добавляете в коллекцию параметров cmd по два (новых) параметра - а их должно быть всего два...
Перепишите, например, как-то вот так:
Код: 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.
using (SqlConnection sqlConn = new SqlConnection(conn))
{
   String store = "InsertExcel";

   SqlCommand cmd = new SqlCommand(store, sqlConn);
   cmd.CommandType = CommandType.StoredProcedure;
   sqlConn.Open();

   SqlParameter name1 = new SqlParameter("@name1", SqlDbType.NVarChar, 50);
   SqlParameter name2 = new SqlParameter("@name2", SqlDbType.NVarChar, 50);

   foreach (DataRow row in excelDataSet.Tables[0].Rows)
   {
      if (row[0] == null)
            name1.Value = DBNull.Value;
      else
            name1.Value = row[0];
   
      if (row[1] == null)
            name2.Value = DBNull.Value;}
      else
            name2.Value = row[1];

      cmd.ExecuteNonQuery();
   }
}
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38044686
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708Как лучше всего записывать данные из DataTable в sql-ю базу
SqlBulkCopy и только SqlBulkCopy.

P.S. Код от sphinx_mv можешь выкинуть на свалку.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38045340
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Посоветуйте лучше
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38045351
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv,

Поэкспериментировал и сделал там оказалось все намного проще

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
using (SqlConnection sqlConn = new SqlConnection(conn))
{
String store = "InsertExcel";

sqlConn.Open();

foreach (DataRow row in excelDataSet.Tables[0].Rows)
                {
SqlCommand cmd = new SqlCommand(store, sqlConn);
cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.Add("@name1", row[0].ToString());
                    cmd.Parameters.Add("@name2", row[1].ToString());

                    SqlParameter name1 = new SqlParameter("@name1", SqlDbType.NVarChar, 50);
                    SqlParameter name2 = new SqlParameter("@name2", SqlDbType.NVarChar, 50);

                    cmd.ExecuteNonQuery();
                }
                
                sqlConn.Close();
}



А вот если сделать так то все работает
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38045643
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708sphinx_mv,

Поэкспериментировал и сделал там оказалось все намного проще

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
using (SqlConnection sqlConn = new SqlConnection(conn))
{
String store = "InsertExcel";

sqlConn.Open();

foreach (DataRow row in excelDataSet.Tables[0].Rows)
                {
SqlCommand cmd = new SqlCommand(store, sqlConn);
cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.Add("@name1", row[0].ToString());
                    cmd.Parameters.Add("@name2", row[1].ToString());

                    SqlParameter name1 = new SqlParameter("@name1", SqlDbType.NVarChar, 50);
                    SqlParameter name2 = new SqlParameter("@name2", SqlDbType.NVarChar, 50);

                    cmd.ExecuteNonQuery();
                }
                
                sqlConn.Close();
}



А вот если сделать так то все работаетРаботает - уже хорошо. :)
И только теперь можно (и даже нужно) заняться "улучшизмом"...

Обратите внимание: у Вас создается по одному экземпляру SqlCommand (с набором параметров) на каждую итерацию...
На больших объемах данных (если такой подход к кодированию сохранится) может вызвать определенныее проблемы. На "мелочах" (и поначалу) выделение памяти и инициализация объектов и последующее освобождение выделенных под них ресурсов не очень заметны, но с ростом объемов обрабатываемых данных затраты на эти операции многократно (и нелинейно) возрастают...

И еще... Ни сами переменные параметров name1 и name2, ни их инициализация в Вашем примере в-общем-то не нужны - эти две строки в Вашем примере можно безболезненно убрать.

P.S. А у меня была ошибка: name1 и name2 не добавлялись в коллекцию параметров cmd.
Нужно было использовать sql.Parameters.Add(name1) и тоже самое для name2 сразу после их инициализации - и тоже бы работало... :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38045655
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv,

Так данных то в этих файлах что даются немного.

По поводу улучшений попробую ваш код ну может еще чего то накопаю

Спасибо.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38045657
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvНужно было использовать sql.Parameters.Add(name1) и тоже самое для name2 сразу после их инициализации - и тоже бы работало... :)
Садись, двойка. RTFM

...Перегруженной версией метода Add, принимающая строку и объект пренебрегали из-за возможного конфликта с перегруженной версией SqlParameterCollection.Add, принимающей String и значение из перечисления SqlDbType, поскольку передача целого значения в строке может интерпретироваться как значение параметра или соответствующее значение SqlDbType. Используйте AddWithValue, когда требуется добавить параметр, задав его имя и значение.

Даже дети про это знают.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38045700
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mvНужно было использовать sql.Parameters.Add(name1) и тоже самое для name2 сразу после их инициализации - и тоже бы работало... :)
Садись, двойка. RTFM

...Перегруженной версией метода Add, принимающая строку и объект пренебрегали из-за возможного конфликта с перегруженной версией SqlParameterCollection.Add, принимающей String и значение из перечисления SqlDbType, поскольку передача целого значения в строке может интерпретироваться как значение параметра или соответствующее значение SqlDbType. Используйте AddWithValue, когда требуется добавить параметр, задав его имя и значение.

Даже дети про это знают.
Дети даже НЕ ЗНАЮТ всех перегруженных методов (в частности, SqlParameterCollection.Add(SqlParameter)) - и ОЧЕНЬ зря...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
   SqlCommand cmd = new SqlCommand(store, sqlConn);
   cmd.CommandType = CommandType.StoredProcedure;

   SqlParameter name1 = new SqlParameter("@name1", SqlDbType.NVarChar, 50);
   SqlParameter name2 = new SqlParameter("@name2", SqlDbType.NVarChar, 50);

   #region Это я ошибочно пропустил в исходном варианте
   cmd.Parameters.Add(name1);
   cmd.Parameters.Add(name2);
   #endregion Это я ошибочно пропустил в исходном варианте

   foreach (DataRow row in excelDataSet.Tables[0].Rows)
      {
      // далее - по тексту...
      }


Ну, и какие "конфликты", про которые пишется в RTFMе?
То есть, проблема, конечно, МОЖЕТ иметь место - но НЕ в ЭТОМ конкретном случае...
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38045723
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIT2708sphinx_mv,
Так данных то в этих файлах что даются немного.
Ну, так и выделенные ресурсы освобождаются не сразу...
Вполне может сложиться ситуация, когда Ваш код полностью отработал 10-100-1000 раз, а ресурсы, внутри него выделенные, еще ни разу не освободились...
А потом в некий момент времени "Ч" сборщик мусора "дорывается до халявы" (т.е., "свободного" процессора) и начинает все это "фиксить"...
VIT2708Спасибо.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38045734
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvДети даже НЕ ЗНАЮТ всех перегруженных методов (в частности, SqlParameterCollection.Add(SqlParameter)) - и ОЧЕНЬ зря...
У детей рассеянное внимание, они не могут сосредоточиться на главном - рекомендация от MS "Используйте AddWithValue, когда требуется добавить параметр, задав его имя и значение."
Мало?

sphinx_mvНу, и какие "конфликты", про которые пишется в RTFMе?
Если ты до сих пор не понял, о чем речь в документации - иди займи у коллег мозги, а потом садись писать код.

sphinx_mvТо есть, проблема, конечно, МОЖЕТ иметь место - но НЕ в ЭТОМ конкретном случае...
Есть рекомендации, как правильно писать - это самое главное. Писать гавнокод (даже если он на первый взгляд и работает) или писать правильный код - твои личные проблемы. Просто за отсутствием маломальски какого-то ни было опыта ты используешь гумно, нагугленное с пионерских форумов. Учись, бобёр.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38046256
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mvДети даже НЕ ЗНАЮТ всех перегруженных методов (в частности, SqlParameterCollection.Add(SqlParameter)) - и ОЧЕНЬ зря...
У детей рассеянное внимание, они не могут сосредоточиться на главном - рекомендация от MS "Используйте AddWithValue, когда требуется добавить параметр, задав его имя и значение."
Мало?
Айдане3.14зди!
Мне НЕ нужно - т.е. ВООБЩЕ - даже пытаться "добавлять параметр в колекцию параметров вместе со значением" . Мне нужно - и я именно это сделал! - в цикле присвоить значение давным-давно добавленному в коллекцию отдельно проинициализированному параметру! И ВСЕ!
Соответственно, метод коллекции параметров AddWithValue к этому НИКАКОГО отношения к ненаписанной Вами ни единой правильной строке кода отношения не имеет - то есть СОВСЕМ!
Если Вы не видите разницы между этими СОВЕРШЕННО РАЗНЫМИ способами использования параметров в запросах, обращайтесь к несколько более другому специалисту: я такое не лечу - и Вам об этом УЖЕ было неоднократно сказано.
МСУsphinx_mvНу, и какие "конфликты", про которые пишется в RTFMе?
Если ты до сих пор не понял, о чем речь в документации - иди займи у коллег мозги, а потом садись писать код.
Были бы у Вас самого были мозги, Вы бы ПОНЯЛИ, что НА САМОМ ДЕЛЕ написано в процитированом Вами отрывке RTFMа...
И я давно понял: ВАШИ коллеги с Вами делиться мозгами не хотят - другого объяснения отсутствию Вашего "правильно написаного" (по всем "стандартам" и "рекомендациям") работающего варианта решения просто не существует...
МСУsphinx_mvТо есть, проблема, конечно, МОЖЕТ иметь место - но НЕ в ЭТОМ конкретном случае...
Есть рекомендации, как правильно писать - это самое главное.
Рекомендации надо применять В ТОМ МЕСТЕ, К КОТОРОМУ ЭТИ РЕКОМЕНДАЦИИ ОТНОСЯТСЯ!
И рекомендации на то и РЕКОМЕНДАЦИИ, что они РЕКОМЕНДУЮТСЯ, но НЕ обязательны к применению - уж не-говнокодеры об этом должны были бы хотя бы подозревать! Фанатично использовать рекомендации как обязаловку к месту и не к месту - вот это и есть САМЫЙ НАСТОЯЩИЙ ГОВНОКОД!
Вы ТАК пишете?! Тогда Вы ЗНАЕТЕ, как назвать ВАШ "код"?!
МСУ
Писать гавнокод (даже если он на первый взгляд и работает) или писать правильный код - твои личные проблемы. Просто за отсутствием маломальски какого-то ни было опыта ты используешь гумно, нагугленное с пионерских форумов. Учись, бобёр.А самому прекратить дрочить на монитор и показать правильный не-говнокод слабо - вот как раз с теми самыми AddWithValue? Или - еще лучше - SqlBulkCopy? (запасаюсь попкорном и пивом)
Вот такие у нас "гуру": сами ни строки кода (даже не рабочего) не написали, зато у других (полностью функциональный) не код, а говно...
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38046386
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvАйдане3.14зди!
Мне НЕ нужно - т.е. ВООБЩЕ - даже пытаться "добавлять параметр в колекцию параметров вместе со значением" . Мне нужно - и я именно это сделал! - в цикле присвоить значение давным-давно добавленному в коллекцию отдельно проинициализированному параметру! И ВСЕ!
Если нужна переинициализация значением, есть SqlParameterCollection.Clear . Кухарка не знает о этом чудном методе?

sphinx_mvСоответственно, метод коллекции параметров AddWithValue к этому НИКАКОГО отношения к ненаписанной Вами ни единой правильной строке кода отношения не имеет - то есть СОВСЕМ!
AddWithValue не имеет никакого отношения ровно в точности, в которой не имеешь отношения к программированию твой мозг.

sphinx_mvЕсли Вы не видите разницы между этими СОВЕРШЕННО РАЗНЫМИ способами использования параметров в запросах, обращайтесь к несколько более другому специалисту: я такое не лечу - и Вам об этом УЖЕ было неоднократно сказано.
Если ты так и не понял, что AddWithValue - это бест практис, слелай себе трепанацию черепной коробки.

sphinx_mvБыли бы у Вас самого были мозги, Вы бы ПОНЯЛИ, что НА САМОМ ДЕЛЕ написано в процитированом Вами отрывке RTFMа...
И я давно понял: ВАШИ коллеги с Вами делиться мозгами не хотят - другого объяснения отсутствию Вашего "правильно написаного" (по всем "стандартам" и "рекомендациям") работающего варианта решения просто не существует...
Вся проблема заключается не в том, что кто-то с тобой хочет чем-то делиться, а в том, что тебе уже поздно воспринимать что-то новое. Про рекомендации и стандарты я как-бы умалчиваю даже, ты не в состоянии не то что что-то делать, а даже просто думать.

sphinx_mvРекомендации надо применять В ТОМ МЕСТЕ, К КОТОРОМУ ЭТИ РЕКОМЕНДАЦИИ ОТНОСЯТСЯ!
Ну так применяй. Или не знаешь как это применять?

sphinx_mvИ рекомендации на то и РЕКОМЕНДАЦИИ, что они РЕКОМЕНДУЮТСЯ, но НЕ обязательны к применению - уж не-говнокодеры об этом должны были бы хотя бы подозревать! Фанатично использовать рекомендации как обязаловку к месту и не к месту - вот это и есть САМЫЙ НАСТОЯЩИЙ ГОВНОКОД!
Вы ТАК пишете?! Тогда Вы ЗНАЕТЕ, как назвать ВАШ "код"?!
Рекомендации на то и рекомендации, что им нужно следовать, а не тупо быдлокодить, как это делаешь ты. Твоей феерический гавнокод не знает границ, это не удивительно.

sphinx_mvА самому прекратить дрочить на монитор и показать правильный не-говнокод слабо - вот как раз с теми самыми AddWithValue?
Ты меня и монитор с кем-то спутал, не уж-то со своим отражением в зеркале? Бери правую руку и начинай писать правильный код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
using (var ctx = new DalDataContext())
{
    foreach (var item in collection)
    {
        ctx.InsertExcel(item.name1, item.name2); 
    }    
}



ЗЫ: SqlParameter оставь для таких как ты домохозяек, которым не под силу освоить ORM или балк копи.

sphinx_mvИли - еще лучше - SqlBulkCopy? (запасаюсь попкорном и пивом)
Лучше запасись валерьянкой и ножницами для трепанации черпной коробки, тебе эти вещи нужнее будут.
Зачем тебе от меня пример, или уже мозги высохли, чтобы тупо открыть справку и прочитать о этом классе?
http://msdn.microsoft.com/ru-ru/library/system.data.sqlclient.sqlbulkcopy.aspx

sphinx_mvВот такие у нас "гуру": сами ни строки кода (даже не рабочего) не написали, зато у других (полностью функциональный) не код, а говно...
Вот такие у нас "ламеры": сами тонны кода написал (нагугленного, с пионерских форумов) и гордо ходят и надувают пузыри из носа. Бугага.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38046396
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕсли нужна переинициализация значением, есть SqlParameterCollection.Clear . Кухарка не знает о этом чудном методе?
Во-вторых, AddWithValue ретурнит новый созданный SplParameter. Можно только один раз для первого значения из цикла выполнить AddWithValue, а для остальных использовать готовый параметр (чтобы не клерить через Clear, если лениво писать строчку кода).
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38047596
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mvАйдане3.14зди!
Мне НЕ нужно - т.е. ВООБЩЕ - даже пытаться "добавлять параметр в колекцию параметров вместе со значением" . Мне нужно - и я именно это сделал! - в цикле присвоить значение давным-давно добавленному в коллекцию отдельно проинициализированному параметру! И ВСЕ!
Если нужна переинициализация значением, есть SqlParameterCollection.Clear . Кухарка не знает о этом чудном методе?
Еще раз для особо "продвинутых": у меня УЖЕ ЕСТЬ экземпляр параметра с нужными основными атрибутами: имя, тип данных, размерность - это по самому скромному минимуму...
И мне СОВЕРШЕННО не только НЕ нужен, но во многих случаях его еще и физически НЕВОЗМОЖНО использовать, метод AddWithValue, и, тем более - метод Clear, ибо их сочетание в цикле внутри кода от "суперского гуру" - пример редкостного говнокода, который простителен ТОЛЬКО для начинающих программистов-студентов на лабораторках по программированию.
МСУsphinx_mvСоответственно, метод коллекции параметров AddWithValue к этому НИКАКОГО отношения к ненаписанной Вами ни единой правильной строке кода отношения не имеет - то есть СОВСЕМ!
AddWithValue не имеет никакого отношения ровно в точности, в которой не имеешь отношения к программированию твой мозг.
Тут главное, чтобы Вам не вынесло мозги Вашим говнокодом.
Десятки/сотни/тысячи раз в цикле выполнять инициализацию экземпляра (не считая необходимости настроить дополнительные атрибуты экземпляра), для который совершенно безболезненным образом можно неоднократно присваивать новое значение Value - это не просто круто... ЭТО - ОЧЕНЬ КРУТО!!!
МСУsphinx_mvЕсли Вы не видите разницы между этими СОВЕРШЕННО РАЗНЫМИ способами использования параметров в запросах, обращайтесь к несколько более другому специалисту: я такое не лечу - и Вам об этом УЖЕ было неоднократно сказано.
Если ты так и не понял, что AddWithValue - это бест практис, слелай себе трепанацию черепной коробки.
А!!! Так Вам УЖЕ сделали трепананацию?! 8()
Может и про лоботомию не забыли?
МСУsphinx_mvБыли бы у Вас самого были мозги, Вы бы ПОНЯЛИ, что НА САМОМ ДЕЛЕ написано в процитированом Вами отрывке RTFMа...
И я давно понял: ВАШИ коллеги с Вами делиться мозгами не хотят - другого объяснения отсутствию Вашего "правильно написаного" (по всем "стандартам" и "рекомендациям") работающего варианта решения просто не существует...
Вся проблема заключается не в том, что кто-то с тобой хочет чем-то делиться, а в том, что тебе уже поздно воспринимать что-то новое. Про рекомендации и стандарты я как-бы умалчиваю даже, ты не в состоянии не то что что-то делать, а даже просто думать.
Ну, с Вашими познаниями стандартов Вам еще леучиться и ле учиться...
То Вы с основами объектно -ориентированного программирования убились об стену...
То для Вас дословное майкрософтовское определение термина "code-behind" стало означать что-то более другое, чем разделение кода и верстки в ASP.NET...
То для Вас рекомендация относительно ОЧЕНЬ ЧАСТНОГО случая использования одного конкретного, отдельно взятого наследника DbParameterCollection , который вызывает когнитивный дисонанс мсу-образных говнокодеров, внезапно становятся "бэст практис"...
МСУsphinx_mvРекомендации надо применять В ТОМ МЕСТЕ, К КОТОРОМУ ЭТИ РЕКОМЕНДАЦИИ ОТНОСЯТСЯ!
Ну так применяй. Или не знаешь как это применять?
Вот и применяйте! Если не знаете не только основ ADO.NET, но и функционала базовых класов в .NET...
А я НЕ хочу, НЕ должен, НЕ обязан и НЕ буду использовать Вашу говнокодерскую "бэст практис" в своих разработках - к счастью, Ваш бред к моей нынешней платформе разработки даже и НЕ применим: эквивалентная коллекция параметров просто "положила" на Ваш когнитивно-диссонансный "супер-AddWithValue".
МСУsphinx_mvИ рекомендации на то и РЕКОМЕНДАЦИИ, что они РЕКОМЕНДУЮТСЯ, но НЕ обязательны к применению - уж не-говнокодеры об этом должны были бы хотя бы подозревать! Фанатично использовать рекомендации как обязаловку к месту и не к месту - вот это и есть САМЫЙ НАСТОЯЩИЙ ГОВНОКОД!
Вы ТАК пишете?! Тогда Вы ЗНАЕТЕ, как назвать ВАШ "код"?!
Рекомендации на то и рекомендации, что им нужно следовать, а не тупо быдлокодить, как это делаешь ты. Твоей феерический гавнокод не знает границ, это не удивительно.
Бла-бла-бла...
Говнокодеры, естественно НЕ знают, что DbParamaterCollection, от которого наследуются все XXXParameterCollection, НЕ содержит метода AddWithValue - во такая "бэст практис"... Соответственно, даже Мелкомягкие считают вполне вменяемым решением необязательность реализации этого метода по усмотрению разработчиков соотвествующих библиотек классов. Были бы у Вас мозги, это, может быть, заставило бы Вас задуматься, с чего бы это вдруг...
МСУsphinx_mvА самому прекратить дрочить на монитор и показать правильный не-говнокод слабо - вот как раз с теми самыми AddWithValue?
Ты меня и монитор с кем-то спутал, не уж-то со своим отражением в зеркале? Бери правую руку и начинай писать правильный код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
using (var ctx = new DalDataContext())
{
    foreach (var item in collection)
    {
        ctx.InsertExcel(item.name1, item.name2); 
    }    
}


Говнокод! Начиная с того, что он НЕ РАБОЧИЙ - то есть, ВООБЩЕ: не приведено еще ...дцать экранов Вашего (дополнительного) говнокодирования, чтобы это хотя бы можно было попытаться откомпилировалось...
И заканчивая тем, что ни AddWithValue, ни SqlBulkCopy, которые были указаны в исходных условиях, нигде не используются..
Соответственно, Вы всегда можете получить Вашу медаль говнокодера по первому Вашему требованию...
МСУЗЫ: SqlParameter оставь для таких как ты домохозяек, которым не под силу освоить ORM или балк копи.
BulkCopy - даже для Вас это вызвало немеряные затруднения.
МСУsphinx_mvИли - еще лучше - SqlBulkCopy? (запасаюсь попкорном и пивом)
Лучше запасись валерьянкой и ножницами для трепанации черпной коробки, тебе эти вещи нужнее будут.
Зачем тебе от меня пример, или уже мозги высохли, чтобы тупо открыть справку и прочитать о этом классе?
http://msdn.microsoft.com/ru-ru/library/system.data.sqlclient.sqlbulkcopy.aspx
МСУНЕ КАНАЕТ: ПРИМЕР КОДА - В СТУДИЮ!!!
МАКСИМАЛЬНО ПОЛНЫЙ ПРИМЕР!
Строку подключения к БД и заполнение DataTable исходными данными из файла Excel разрешаю пропустить...
Если ВЫ не можете САМОСТОЯТЕЛЬНО показать вменяемый пример кода (ну, хотя бы копи-пастом), ВЫ - ЛАМЕР и ЛОХ! Очень, надеюсь, лохи и ламеры не обидятся за эти сравнения...
Ну, а про говнокодера, вроде бы, уже было сказано...

sphinx_mvВот такие у нас "гуру": сами ни строки кода (даже не рабочего) не написали, зато у других (полностью функциональный) не код, а говно...
Вот такие у нас "ламеры": сами тонны кода написал (нагугленного, с пионерских форумов) и гордо ходят и надувают пузыри из носа. Бугага.Бла-бла-бла...
Если Вы обосрались, для начала хотя бы подмойтесь - воняет...
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38047597
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМСУЕсли нужна переинициализация значением, есть SqlParameterCollection.Clear . Кухарка не знает о этом чудном методе?
Во-вторых, AddWithValue ретурнит новый созданный SplParameter. Можно только один раз для первого значения из цикла выполнить AddWithValue, а для остальных использовать готовый параметр (чтобы не клерить через Clear, если лениво писать строчку кода).Ага... Обязательно нужно добавить еще говнокода, чтобы определить, а не первая ли строка в цикле обрабатывается...
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048148
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvЕще раз для особо "продвинутых": у меня УЖЕ ЕСТЬ экземпляр параметра с нужными основными атрибутами: имя, тип данных, размерность - это по самому скромному минимуму...
Еще раз для не особо смышленых - ты можешь и новый параметр в каждой итерации генерить, супер прироста скорости ты не получишь.

sphinx_mvИ мне СОВЕРШЕННО не только НЕ нужен, но во многих случаях его еще и физически НЕВОЗМОЖНО использовать, метод AddWithValue, и, тем более - метод Clear, ибо их сочетание в цикле внутри кода от "суперского гуру" - пример редкостного говнокода, который простителен ТОЛЬКО для начинающих программистов-студентов на лабораторках по программированию.
Кодирующая обезьянка до сих пор не поняла, что написала гавнокод, который убог по своей сути? Clear особо сильно не заговнял бы твой гавнокод.

sphinx_mvТут главное, чтобы Вам не вынесло мозги Вашим говнокодом.
Гавнокод у тебя в подсознании, которое абсолютно бездумно пытается что-то написать.

sphinx_mvДесятки/сотни/тысячи раз в цикле выполнять инициализацию экземпляра (не считая необходимости настроить дополнительные атрибуты экземпляра), для который совершенно безболезненным образом можно неоднократно присваивать новое значение Value - это не просто круто... ЭТО - ОЧЕНЬ КРУТО!!!
Десятки/сотни/тысячи раз в цикле выполнять инициализацию экземпляра - это очень круто, особенно для тебя. Десятки/сотни/тысячи раз в цикле выполняют такие операции только параноики вроде тебя, а нормальные люди пользуются балком (не только SqlBulkCopy, есть иные вариации), SSIS, DTS, ORM наконец.

sphinx_mvА!!! Так Вам УЖЕ сделали трепананацию?! 8()
Может и про лоботомию не забыли?
Откуда ты знаешь столько умных слов? Опытный в этом деле, однако.

sphinx_mvНу, с Вашими познаниями стандартов Вам еще леучиться и ле учиться...
Да уж, с твоими дегенеративными умениями стряпать хранимые процедуры, пакеты и бизнес логику на оракле с единичным по иерархии наследованием - только сверстников в детсаде веселить. Продолжай дальше пыжиться.

sphinx_mvТо Вы с основами объектно -ориентированного программирования убились об стену...
Уж не напоминай, ты так весьма прискорбно наложил в штаны от слов инкапсуляция, полиморфизм и наследование, что твои унылые хранимые процедуры начали рваться по шву. Было смешно.

sphinx_mvТо для Вас дословное майкрософтовское определение термина "code-behind" стало означать что-то более другое, чем разделение кода и верстки в ASP.NET...
Ты до сих пор так ничего и не поняла, блондинка - code-behind разделяет серверный код (логику и декларативный aspx/ascx). Вёрстка разделяется только в твоей больной фантазии - садись, опять двойка.

sphinx_mvТо для Вас рекомендация относительно ОЧЕНЬ ЧАСТНОГО случая использования одного конкретного, отдельно взятого наследника DbParameterCollection , который вызывает когнитивный дисонанс мсу-образных говнокодеров, внезапно становятся "бэст практис"...
Всё намного банальнее - твои мозги не умеют воспринимать и интерпритировать эти частные случаи под конкретную реализацию, основанную на дрокументированную рекомендацию.

sphinx_mvВот и применяйте! Если не знаете не только основ ADO.NET, но и функционала базовых класов в .NET...
Ты еще из яйца не вылупился, когда тут во всю тёрли об основах адо и дотнета, даже не то, чтобы что-то писать на говно-хп. Иди RTFM кури, недоросль.

sphinx_mvА я НЕ хочу, НЕ должен, НЕ обязан и НЕ буду использовать Вашу говнокодерскую "бэст практис" в своих разработках - к счастью, Ваш бред к моей нынешней платформе разработки даже и НЕ применим: эквивалентная коллекция параметров просто "положила" на Ваш когнитивно-диссонансный "супер-AddWithValue".
Ты можешь даже убить себя об стену, мне фиолетово. А AddWithValue будут использовать те, кто понимает что это и зачем оно нужно.

sphinx_mvБла-бла-бла...
Говнокодеры, естественно НЕ знают, что DbParamaterCollection, от которого наследуются все XXXParameterCollection, НЕ содержит метода AddWithValue - во такая "бэст практис"... Соответственно, даже Мелкомягкие считают вполне вменяемым решением необязательность реализации этого метода по усмотрению разработчиков соотвествующих библиотек классов. Были бы у Вас мозги, это, может быть, заставило бы Вас задуматься, с чего бы это вдруг...
Ахринеть, прикинь, MarshalByRefObject тоже ничего не знает о AddWithValue. К чему твой унылый высер? Какую-то ты ахиненю задвинул про то, что там мелкомягкие считают про необязательность. Кодируеющей обезьянке невдомёк, что она глупости пишет?

sphinx_mvГовнокод! Начиная с того, что он НЕ РАБОЧИЙ - то есть, ВООБЩЕ: не приведено еще ...дцать экранов Вашего (дополнительного) говнокодирования, чтобы это хотя бы можно было попытаться откомпилировалось...
Посмешила твоя тупость. Дцать экранов кода сокрыто от прикладного разработчика в виде кодогенерирующего прокси-контекста, который строит дата модель на основе объектов хранилища. У тебя 2 варианта - убить себя об стену или-таки почитать в своей любимой википедии, что такое ORM и какую оно нишу занимает в современной разработке. И только после этого кодирующая обезьянка поймет, что прикладной код станет очень компактным, типизированным и удобоваримым. В отличие от твоего датасетного гумна, которое ты тут опорожнил в форум.

sphinx_mvИ заканчивая тем, что ни AddWithValue, ни SqlBulkCopy, которые были указаны в исходных условиях, нигде не используются..
Няньчить тебя будут воспитатели в садике, может и по-буквам код распишут. Если не хватает ума написать элементарщину с помощью AddWithValue и SqlBulkCopy - можешь даунгрейдиться до яслей, там точно помогут.

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

sphinx_mvBulkCopy - даже для Вас это вызвало немеряные затруднения.
SqlBulkCopy я использовал столько раз в подобных задачах, сколько твоя унылая воспаленная фантазия генерила гавнокод на оракловых хранимых процедурах.

sphinx_mvНЕ КАНАЕТ: ПРИМЕР КОДА - В СТУДИЮ!!!
МАКСИМАЛЬНО ПОЛНЫЙ ПРИМЕР!
Чудик, я тебя ссылку дал с кодом. Никак не осилишь? Тогда в садик сходи, детвора поможет.

sphinx_mvСтроку подключения к БД и заполнение DataTable исходными данными из файла Excel разрешаю пропустить...
Это ты уже осилил? Занятно. Еще вчера ты просил весь код.

sphinx_mvЕсли ВЫ не можете САМОСТОЯТЕЛЬНО показать вменяемый пример кода (ну, хотя бы копи-пастом), ВЫ - ЛАМЕР и ЛОХ! Очень, надеюсь, лохи и ламеры не обидятся за эти сравнения...
Ребёнок, ты из каких кустов вылез? Твои унылые словечки про лохов одногрупникам рассказывай. А по поводу кода - если ты SqlBulkCopy так и не осилил из документации, в которой в конце есть подробный расписанные пример - то тебе дорога только к кирпичной стене.

sphinx_mvЕсли Вы обосрались, для начала хотя бы подмойтесь - воняет...
Если я обосрался на тебя, то ты не нуждаешься в чистке.

sphinx_mvАга... Обязательно нужно добавить еще говнокода, чтобы определить, а не первая ли строка в цикле обрабатывается...
Ну конечно, ламеры не знают о существовании тернартного оператора (только не проси опять приводить пример, потому что обезьянка не умеет читать документацию), с помощью которого в одну строчку можно сделать такую проверку. Во-вторых, тернарную операцию нужно проводить до цикла. Жжешь как всегда.

Ну и по поводу code-behind, вот тебе ответ на твой высер 13472778

sphinx_mv"Не говорите, что мне делать - и я не скажу куда Вам пойти." (с)
Обезьянка разучила новую скороговорку? Занятно.
"Чего в голове нет, того к ушам не пришьёшь" (с)

sphinx_mvЕсли Вам кажется, что ТС ДОЛЖЕН Вам отвечать на тему сроков - Вы можете САМОСТОЯТЕЛЬНО задать ему этот вопрос...
И моего РАЗРЕШЕНИЯ Вам для этого СОВЕРШЕННО не требуется...
Зачем мне самостоятельно узнавать о сроках? Это же ты начал вонь про неуточненные сроки. Или уже нить обсуждения потерял?

sphinx_mvКстати, если у Вас в очередной раз проблемы с памятью: ТС говорил о РАБОТАЮЩЕМ приложении, для которого понятие "поиграться с новой технологией" ВООБЩЕ не применимы. Соотвественно, имеем очередные Ваши пустые измышлизмы.

Похожу проблемы с памятью у кого-то другого - ТС про "поиграться" вообще ничего не говорил. О чем ты вообще пишешь, фантазёр?

sphinx_mvЯ не знаю, что генерят Ваши мозги, но если Вы в своих "непонятно-чего-заключениях" пропустили вводные от ТС - это не мои проблемы...
Для начала нужно разучить буквы и научиться читать, чтобы понимать обсуждаемую предметику. Без этих азов у тебя нет шансов на успех.

sphinx_mvЕсли Вы при этом предположили, что у ТС есть ВСЕ необходимые ресурсы, упустив два из наиболее значимых, кто же ж Вам доктор, если только тупая (на большее Вас, почему-то никогда не хватает) констатация фактов способна вернуть Вас в реальный мир?
Ты сам себе перечишь: как можно предположить, что "у ТС есть ВСЕ необходимые ресурсы" и при этом "упустив пару значимых моментов"? Вода белая но при этом красная.
Ты прямо-таки блещешь нездоровой логикой, впрочем, не удивительно.

sphinx_mvЕсли бы у ТС были в команде (я даже, посмотрев в хрустальный шар, очень сильно сомневаюсь в самом наличии у него команды) разработчики для asp.net хоть с минимальным опытом, он бы не задавал такой простой вопрос о переходить/не переходить на него здесь - зуб даю!
Обычно такие как ты без этих самых зубов и остаются. Хрустальный шар можешь засунуть себе туда, где ему самое место - а у автора может быть команда (при нем, при параллельной команде/отделе и т.д.). Варианты одним не ограничиваются.

sphinx_mvБла-бла-бла...
Вам уже неоднократно указывалось, что мало знать название термина - нужно понимать, что этот термин подразумевает...
Читать тут.
Что ты мне хотел рассказать в этой статье? Тем, что тупой автор называет асп.нет вьюху html'ем и css'ом?
Вот пока такие как ты оболтусы пишут статьи на различных ресурсах, у нью дженерейшен имеется выбор - читать левый материал либо правильный.


sphinx_mvMS introduced CodeBehind, a technique which allows you to completely separate markup (HTML, CSS etc.) and code (C#, VB.NET etc.)
Перевести?
Даже не особо умная твоя википедия знает, что: http://ru.wikipedia.org/wiki/ASP.NET
"Возможность разделения визуальной части и бизнес-логики по разным файлам («code behind»)" (c)
речь идет о серверных элементах - *.cs и *.aspx (*.ascx, *.ashx).
"html+css" в качестве вью для код бехайнда - только твое воспаленное сознание может придумать. Учи матчасть, неудачник.

sphinx_mvВы почитать первоисточник (ASP.NET Code-Behind Model Overview) пробовали?
Пробовал, когда ты еще ссаться кипятком под стол ходил. От того, что написал первый пакет в оракле.

sphinx_mvCode-behind refers to code for your ASP.NET page that is contained within a separate class file. This allows a clean separation of your HTML from your presentation logic.
Перевод требуется?
В статье "html-ем" называют "aspx" (что не есть правильно) :

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<%@ Language="C#" Inherits="MyStuff.MyClass" %>
<HTML>
    <body>
        <form id="MyForm" runat="server">
        <asp:textbox id="MyTextBox" text="Hello World" runat="server"></asp:textbox>
        <asp:button id="MyButton" text="Echo Input" Onclick="MyButton_Click" runat="server"></asp:button>
        <asp:label id="MyLabel" runat="server" />
        </form>
    </body>
</HTML>



Чтобы твоя тупая башка лучше понимала предметику, разжую - это "aspx", серверная страница с серверными элементами управления до рендеринга. После того, как код этой страницы будет отрендерен движком asp.net, клиент в браузере получит "html".
Так что в примере - не "html". В html невозможно использовать серверные элементы runat.

Ты начал свою вонь про клиент "html" и SQL. Я твоей тупой башке уже много времени объясняю о "Code-Behind" или View + SQL. Если ты до сих пор не можешь понять разницу между "html" (клиент, после рендеринга) и "aspx" (сервер, до рендеринга) - сходи в ясли, там на пальцах покажут.
Ну что, балбесу всё понятно или дальше дожевать?

sphinx_mvБла-бла-бла...
Мусье, таки, не знает, в чем заключается разница между "дополнительной абстракцией" и "прямым подключением к БД"?
1. Кодирующая обезьянка выучила новое слово "дополнительная абстракция"?
2. Этот высер, вообще, о чем?

sphinx_mvА уж выдавать "прямое подключение" LinqDataSource, SOA и пр. - это вообще верх "совершенства" познаний...
Чудо, LinqDataSource напрямую подключается к БД и транслирует запросы через ORM датаконтекст. Это его прямая обязанность, неуч.

sphinx_mvМожет, все-таки, перед тем как другим советовать, Вам бы самому почитать "букварь"? И не один...
Советовать тебе будут дети в саду, где тебе и место. А я тебе, балбесу, пишу о том, как это работает.

sphinx_mvВам снизили дозу галоперидола? Наверное, врач погорячился...
Ты после трепанации черепа? Заметно тебя потрепали врачи...

sphinx_mvСудя по уровню и качеству Ваших знаний, лучше не учиться - только зря время потеряешь...
Судя по количеству твоей вброшенной безумной фантазии про html, codebehind, sql, хп, пакеты, логика - тебя нужно срочно закрывать в психбольнице и лечить таблетками.

sphinx_mvПочему я вменяемо должен что-то пояснять невменяемому, который работу с внешними устройствами исключил из круга задач, решаемых при помощи веб?
Почему я вменяемо должен что-то пояснять шизофренику, который не знает, что такое activex, silverlight, flash и html5? Какой ему веб, он еще с хранимыми процедурами не научился работать.

sphinx_mvЭто приложение писали такие как Вы: лозунги при нуле знаний с минус-бесконечной способности думать...
Это приложение писали такие как ты, безумные безудержные ламеры, которые ничего не понимают в том, что делают.

sphinx_mvТ.е., Вы до сих пор не поняли, что предлагаете?!
То есть я до сих пор понял, что предлагаю.

sphinx_mvИ, кстати, не только в этом конкретном обсуждении одного очень конкретного десктопного приложения...
Детско-юношеский максимализм, однако... Бывает... К сожалению, не у всех проходит...
Параною лучше подлечи, а то загнешься ненароком.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048171
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, хватит уже срач разводить. Промохнулся ты с AddWithValue в контексте вызова хранимой процедуры с параметрами в цикле, признай. :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048206
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПромохнулся ты с AddWithValue в контексте вызова хранимой процедуры с параметрами в цикле, признай. :)
не признаю :) Инициализируй через AddWithValue первое значение и крутись дальше в цикле.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048214
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAПромохнулся ты с AddWithValue в контексте вызова хранимой процедуры с параметрами в цикле, признай. :)
не признаю :) Инициализируй через AddWithValue первое значение и крутись дальше в цикле.На хера?
Код: c#
1.
2.
3.
4.
public SqlParameter AddWithValue(string parameterName, object value)
{
    return this.Add(new SqlParameter(parameterName, value));
}
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048226
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНа хера?
Рекомендация.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048242
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAНа хера?
Рекомендация.Рекомендация гласит: "используйте AddWithValue, когда требуется добавить параметр, задав его имя и значение ".

А требуется добавить параметры:
а. перед циклом;
б. задав им имя, SqlDbType и размер перед циклом;
в. значение параметров менять в цикле.

На хера использовать метод AddWithValue? :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048257
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAРекомендация гласит: "используйте AddWithValue, когда требуется добавить параметр, задав его имя и значение ".
Правильно.

skyANAА требуется добавить параметры:
а. перед циклом;
б. задав им имя, SqlDbType и размер перед циклом;
в. значение параметров менять в цикле.
а. Рекомендация фиолетово, перед чем вызывается AddWithValue. Вызов может быть перед циклом, после цикла, в рекурсионном методе, в ASP.NET MVC приложении, в SQL CLR приложении. Вызов может быть утром или вечером. Так же AddWithValue может писать мужчина или женщина.
б. В рекомендации указано про 2 параметра (имя и значение). Добавляй их. А потом доинициализировать всем чем угодно можно в любое время.
в. Меняй. До цикла мы создали параметр через AddWithValue и сохранили в переменной, а в цикле юзаем эту переменную.

skyANAНа хера использовать метод AddWithValue? :)
Рекомендация :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048266
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, короче я поржал. Объясни зачем появилась данная рекомендаци, ещё поржу. А ещё лучше пример кода напиши. :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048273
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, короче я поржал. Объясни зачем появилась данная рекомендаци, ещё поржу. А ещё лучше пример кода напиши. :)
skyANA, я тоже глумлюсь. Чтобы объяснить, зачем оявилась данная рекомендация, нужно обратиться к майкрософту. Черкани им, вместе поржем.
Еще один... Какой код тебе написать, как создать параметр через AddWithValue до цикла и в цикле юзать его Value? Ты издеваешься?
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048284
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAМСУ, короче я поржал. Объясни зачем появилась данная рекомендаци, ещё поржу. А ещё лучше пример кода напиши. :)
skyANA, я тоже глумлюсь. Чтобы объяснить, зачем оявилась данная рекомендация, нужно обратиться к майкрософту. Черкани им, вместе поржем.Вообще-то в твой же цитате рекомендации это написано, жжёшь. Сам-то читал её?

МСУЕще один... Какой код тебе написать, как создать параметр через AddWithValue до цикла и в цикле юзать его Value? Ты издеваешься? Ага, именно этот код, только не забудь, что надо задать ещё и тип и размер. Хотя посмотреть как ты заюзаешь AddWithValue до цикла тоже бы хотелось. Слабо?
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048285
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Модератор: Бери, хотя бы, в спойлер свои мегапосты.
К тому же, не стоит переходить на личности. Это не только к тебе, а ко всем участникам.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048299
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, приведу свой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };

    command.Parameters.Add("name1", SqlDbType.NVarChar, 50);
    command.Parameters.Add("name2", SqlDbType.NVarChar, 50);

    connection.Open();

    // А вот здесь я хотел пройтись циклом и записать данные в базу
    foreach (DataRow row in excelDataSet.Tables[0].Rows)
    {
        command.Parameters["name1"].Value = row[0];
        command.Parameters["name2"].Value = row[1];
        command.ExecuteNonQuery();
    }
} // connection.Close() вызывать не надо, т.к. используем using
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048313
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВообще-то в твой же цитате рекомендации это написано, жжёшь. Сам-то читал её?
Вообще-то я про цитату на рекомендацию и говорю. Тупишь ты однако

skyANAАга, именно этот код, только не забудь, что надо задать ещё и тип и размер. Хотя посмотреть как ты заюзаешь AddWithValue до цикла тоже бы хотелось. Слабо?
Пипец, ладно бы тот пионер хочет кода, но от тебя я такого не ожидал :)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
[SRC c#]var cmd = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };
                
var name1 = cmd.Parameters.AddWithValue("@name1", null);
name1.SqlDbType = SqlDbType.NVarChar;
name1.IsNullable = true;
// ...

connection.Open();

foreach (DataRow row in rows)
{
    name1.Value = row["name1"];
    cmd.ExecuteNonQuery();
}

[/SRC]

Надеюсь тебе не надо еще проверок на DBNull.Value / null добавить? :)

Итого: мы создали параметр через честный AddWithValue, согласно документации. Доинициализировали его доп. параметрами, в том же SqlParameter в перегруженных конструкторах далеко не всё есть.

В чём вопрос? :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048315
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри за тег SRC, еще раз:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
var cmd = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };
                
var name1 = cmd.Parameters.AddWithValue("@name1", null);
name1.SqlDbType = SqlDbType.NVarChar;
name1.IsNullable = true;
// ...

connection.Open();

foreach (DataRow row in rows)
{
    name1.Value = row["name1"];
    cmd.ExecuteNonQuery();
}
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048325
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЛадно, приведу свой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };

    command.Parameters.Add("name1", SqlDbType.NVarChar, 50);
    command.Parameters.Add("name2", SqlDbType.NVarChar, 50);

    connection.Open();

    // А вот здесь я хотел пройтись циклом и записать данные в базу
    foreach (DataRow row in excelDataSet.Tables[0].Rows)
    {
        command.Parameters["name1"].Value = row[0];
        command.Parameters["name2"].Value = row[1];
        command.ExecuteNonQuery();
    }
} // connection.Close() вызывать не надо, т.к. используем using


Гавнокод :)
Зачем в каждой итерации постоянно обращатсья к коллекции Parameters, осуществляя поиск по ключу?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };

    var p1 = command.Parameters.Add("name1", SqlDbType.NVarChar, 50);
    var p2 = command.Parameters.Add("name2", SqlDbType.NVarChar, 50);

    connection.Open();

    foreach (DataRow row in excelDataSet.Tables[0].Rows)
    {
        p1.Value = row[0];
        p2.Value = row[1];
        command.ExecuteNonQuery();
    }
} 



P.S. Скиана, когда я научу тебя думать?
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048350
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
      if (row[0] == null)
            name1.Value = DBNull.Value;
      else
            name1.Value = row[0];
   
      if (row[1] == null)
            name2.Value = DBNull.Value;}
      else
            name2.Value = row[1];


sphinx_mv, поржал над твоим гавнокодом За такой код нужно увольнять, минимум. Про отбивание линейкой твоих рук я как бы умалчиваю.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048380
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mvMS introduced CodeBehind, a technique which allows you to completely separate markup (HTML, CSS etc.) and code (C#, VB.NET etc.)
Перевести?
Даже не особо умная твоя википедия знает, что: http://ru.wikipedia.org/wiki/ASP.NET
"Возможность разделения визуальной части и бизнес-логики по разным файлам («code behind»)" (c)
речь идет о серверных элементах - *.cs и *.aspx (*.ascx, *.ashx).
"html+css" в качестве вью для код бехайнда - только твое воспаленное сознание может придумать. Учи матчасть, неудачник.

И это недоразумение утверждает, что оно "читает документацию"...
http://support.microsoft.com/kb/303247
Code-BehindCode-behind refers to code for your ASP.NET page that is contained within a separate class file. This allows a clean separation of your HTML from your presentation logic.
Финиш.

PS. Некотое время назад один мой знакомый завлаборатории сказал: ничего на свете хуже нету, чем дурак с инициативой...
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048390
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mv
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
      if (row[0] == null)
            name1.Value = DBNull.Value;
      else
            name1.Value = row[0];
   
      if (row[1] == null)
            name2.Value = DBNull.Value;}
      else
            name2.Value = row[1];


sphinx_mv, поржал над твоим гавнокодом За такой код нужно увольнять, минимум. Про отбивание линейкой твоих рук я как бы умалчиваю.Ваша "квалификация" и "опыт" совершенно не оспариваются (по причине полного отсутсвия).
И то, что Вы ни разу не сталкивались с поведением параметров при присвоении им null-значения (не путать с DBNull) - это в очередной раз это доказывает.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048411
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvИ это недоразумение утверждает, что оно "читает документацию"...
http://support.microsoft.com/kb/303247
Твой клинический случай особый, попробую трепанировать твой череп еще разок.
Вот код из документации:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<%@ Language="C#" Inherits="MyStuff.MyClass" %>
<HTML>
    <body>
        <form id="MyForm" runat="server">
        <asp:textbox id="MyTextBox" text="Hello World" runat="server"></asp:textbox>
        <asp:button id="MyButton" text="Echo Input" Onclick="MyButton_Click" runat="server"></asp:button>
        <asp:label id="MyLabel" runat="server" />
        </form>
    </body>
</HTML>



Вопрос в лоб. Это всё HTML?

sphinx_mvФиниш.
Финиш может быть только в твоем сознании, которое не понимает сути.

sphinx_mvPS. Некотое время назад один мой знакомый завлаборатории сказал: ничего на свете хуже нету, чем дурак с инициативой...
Правильно, согласен с твоим знакомым. Поэтому тебе пока рано писать про .NET на форумах.

sphinx_mvВаша "квалификация" и "опыт" совершенно не оспариваются (по причине полного отсутсвия).
И то, что Вы ни разу не сталкивались с поведением параметров при присвоении им null-значения (не путать с DBNull) - это в очередной раз это доказывает.
Моя квалификация и опыт подсказывает мне, что есть такое понятие в дотнете, как тернарность. И твой гавнокод пишется за 2 строчки кода.

Код: c#
1.
2.
name1.Value = row[0] ?? DBNull.Value;
name2.Value = row[1] ?? DBNull.Value;



Упс?

P.S. Так что ты там хотел сэкономить на строчках кода по поводу AddWithValue?
P.S2. По вопросу AddWithValue я тебе привел банальный - вопросы будут, клоун?
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048461
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУP.S. Скиана, когда я научу тебя думать?
А вообще прикольно получается. Скианыч решил поднаехать слегонца и попытался прессануть МСУ, требуя от оного признаний в неправоте по поводу AddWithValue. МСУ лениво отмахивался от примеров, ссылаясь на то, что всё это банальность и нафига вам всем код. В рузультате:
1. МСУ-таки написал код с AddWithValue, ничем не уступающему аналогам
2. Скианыч слегонца обосрался со своим кодом
3. И sphinx_mv. Ну а что sphinx_mv, он как был ламером, так им и остался. Но парня тоже не зря опустили в навозную кучу, хоть начал понимать, что такое тернарная условная операция. Уже лучше, гавнокодить будет меньше.

Занавес
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048464
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offtop
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };

    var p1 = command.Parameters.Add("name1", SqlDbType.NVarChar, 50);
    var p2 = command.Parameters.Add("name2", SqlDbType.NVarChar, 50);

    connection.Open();

    foreach (DataRow row in excelDataSet.Tables[0].Rows)
    {
        p1.Value = row[0];
        p2.Value = row[1];
        command.ExecuteNonQuery();
    }
} 



Вот меня всегда озадачивало, почему народ не юзает x CommandBuilder.DeriveParameters():
Код: c#
1.
2.
3.
4.
5.
6.
7.
cmd = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };
SqlCommandBuilder.DeriveParameters(cmd);
...
cmd.Parameters["@name1"].Value=SmthValue;
cmd.Parameters["@name2"].Value=SmthValue;
cmd.ExecuteNonQuery();
...


?
О данной функциональности не дочитали в букваре? Или то, что он прибит к конкретному провайдеру ( Sql CommandBuilder.DeriveParameters()/ OleDb CommandBuilder.DeriveParameters()/ Oracle CommandBuilder.DeriveParameters()/etc)? Ведь сразу снимается куча вопросов , связанных наименованием (с " @ " или без), порядком (RETURN_VALUE - первый), типом и т.д. и т.п...
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048491
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftВот меня всегда озадачивало, почему народ не юзает x CommandBuilder.DeriveParameters()
Тут двоякая ситуация, Экс. С одной стороны да, удобно. С другой стороны - дополнительное обращение к базе данных.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048493
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУдополнительное обращение к базе данных.
И это все? (в смысле: "Почему не юзают?")
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048498
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftВедь сразу снимается куча вопросов , связанных наименованием (с " @ " или без), порядком (RETURN_VALUE - первый), типом и т.д. и т.п
Вот поэтому сто раз говорю, что в топку все эти DBCommand, это прошлый век. Курим нормальную ORM, оперируем типизированными объектами и не паримся. EF, L2S и NH мало?
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048499
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftМСУдополнительное обращение к базе данных.
И это все? (в смысле: "Почему не юзают?")
Выше ответил - гумно всё это. Датасеты туда же.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048501
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftИ это все? (в смысле: "Почему не юзают?")
А этого мало?
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048539
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА этого мало?
Ну, я на мой вопрос хотел получить, так сказать, как бы количественную составляющую, а не качественную
А-ля: "...Огласите весь список, пожалуйста..." ©
Вопрос о "критичности" того или иного аргумента меня не интересует. Голая статистика, так сказать...
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048684
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft, когда работал через ADO.NET, то написал свой DbManager - обертку над System.Data.Common классами. До System.Data.Common.DbCommandBuilder не добрался, тем более у него отсутсвует метод DeriveParameters.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048707
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAВообще-то в твой же цитате рекомендации это написано, жжёшь. Сам-то читал её?
Вообще-то я про цитату на рекомендацию и говорю. Тупишь ты однако
Кто ещё тупит :) Цитирую оригинал, перевод которого ты тут привёл:Remarks AddWithValue replaces the SqlParameterCollection.Add method that takes a String and an Object. The overload of Add that takes a string and an object was deprecated because of possible ambiguity with the SqlParameterCollection.Add overload that takes a String and a SqlDbType enumeration value where passing an integer with the string could be interpreted as being either the parameter value or the corresponding SqlDbType value. Use AddWithValue whenever you want to add a parameter by specifying its name and value.
То есть сделать очередную перегрузку метода Add уже не получалось и пришлось фактически перегрузку метода обозвать по своему.
Таким образом ты рекомендуешь всегда использовать один из перегруженных вариантов вместо других.
Может напишешь в Майкрософт, что проблему-то можно было решить иначе: тупо выкинуть перегруженные методы Add и оставить один, что принимает String и Object? :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048712
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСорри за тег SRC, еще раз:

Код: c#
1.
2.
3.
var name1 = cmd.Parameters.AddWithValue("@name1", null);
name1.SqlDbType = SqlDbType.NVarChar;
name1.IsNullable = true;

Гы... То есть шесть строк вместо двух, круто чё :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048713
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAу него отсутсвует метод DeriveParameters.
уже было:
Ex_Softто, что он прибит к конкретному провайдеру ( Sql CommandBuilder.DeriveParameters()/ OleDb CommandBuilder.DeriveParameters()/ Oracle CommandBuilder.DeriveParameters()/etc)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048720
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAЛадно, приведу свой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };

    command.Parameters.Add("name1", SqlDbType.NVarChar, 50);
    command.Parameters.Add("name2", SqlDbType.NVarChar, 50);

    connection.Open();

    // А вот здесь я хотел пройтись циклом и записать данные в базу
    foreach (DataRow row in excelDataSet.Tables[0].Rows)
    {
        command.Parameters["name1"].Value = row[0];
        command.Parameters["name2"].Value = row[1];
        command.ExecuteNonQuery();
    }
} // connection.Close() вызывать не надо, т.к. используем using


Гавнокод :)
Зачем в каждой итерации постоянно обращатсья к коллекции Parameters, осуществляя поиск по ключу?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using (var connection = new SqlConnection(connectionString))
{
    var command = new SqlCommand("InsertExcel", connection) { CommandType = CommandType.StoredProcedure };

    var p1 = command.Parameters.Add("name1", SqlDbType.NVarChar, 50);
    var p2 = command.Parameters.Add("name2", SqlDbType.NVarChar, 50);

    connection.Open();

    foreach (DataRow row in excelDataSet.Tables[0].Rows)
    {
        p1.Value = row[0];
        p2.Value = row[1];
        command.ExecuteNonQuery();
    }
} 



P.S. Скиана, когда я научу тебя думать? О, великий оптимизатор, ты крут! IndexOf по листу из двух элементов это же так медленно :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048731
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМСУP.S. Скиана, когда я научу тебя думать?
А вообще прикольно получается. Скианыч решил поднаехать слегонца и попытался прессануть МСУ, требуя от оного признаний в неправоте по поводу AddWithValue. МСУ лениво отмахивался от примеров, ссылаясь на то, что всё это банальность и нафига вам всем код. В рузультате:
1. МСУ-таки написал код с AddWithValue, ничем не уступающему аналогам
2. Скианыч слегонца обосрался со своим кодомВообще-то у меня совещание было.
Твой код - это использование того же метода Add, только на четыре строки больше. На фига? :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048743
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКто ещё тупит :) Цитирую оригинал, перевод которого ты тут привёл...
Да нет, ты-таки тупишь :) Что тебе не ясно из рекомендаций MS, можешь ответить на вопрос? А то, как устроено в реализации метода - монопенисуально. Никто не мешает в следующей версии FW ввести коррективы в реализацию - это так, к слову, конечно.
Я о том, что физический смысл ковыряния в реализациях равен нулю.

skyANAТо есть сделать очередную перегрузку метода Add уже не получалось и пришлось фактически перегрузку метода обозвать по своему.
Читай выше.

skyANAТаким образом ты рекомендуешь всегда использовать один из перегруженных вариантов вместо других.
Не я рекомендую, а MS рекомендует:

RTFMПерегруженной версией метода Add, принимающая строку и объект пренебрегали из-за возможного конфликта с перегруженной версией SqlParameterCollection.Add, принимающей String и значение из перечисления SqlDbType, поскольку передача целого значения в строке может интерпретироваться как значение параметра или соответствующее значение SqlDbType. Используйте AddWithValue, когда требуется добавить параметр, задав его имя и значение.

skyANAМожет напишешь в Майкрософт, что проблему-то можно было решить иначе: тупо выкинуть перегруженные методы Add и оставить один, что принимает String и Object? :)
Может и напишу. Если время будет :)

skyANAМСУСорри за тег SRC, еще раз:

Код: c#
1.
2.
3.
var name1 = cmd.Parameters.AddWithValue("@name1", null);
name1.SqlDbType = SqlDbType.NVarChar;
name1.IsNullable = true;

Гы... То есть шесть строк вместо двух, круто чё :)
Ты код не тот процитировал, 6 строк - это про оператор "??". Во-вторых, "кручо чё": писать лапшекод и ифами, или писать человеческий код с тернарными операторами. Гавнокодерам не понять, забей.

skyANAВообще-то у меня совещание было.
Твой код - это использование того же метода Add, только на четыре строки больше. На фига? :)
Почему на 4, откуда эта цифра? Это не просто использование метода Add, это еще и следование рекомендациям :)

Ex_SoftskyANAу него отсутсвует метод DeriveParameters.
уже было:
Ex_Softто, что он прибит к конкретному провайдеру ( Sql CommandBuilder.DeriveParameters()/ OleDb CommandBuilder.DeriveParameters()/ Oracle CommandBuilder.DeriveParameters()/etc)
+1, что-то он не в кассу сегодня постит :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048763
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, ладно, я понял, ты включил упрямого дурочка.
Считай замечание о том, что метод AddWithValue сделали потому, что нельзя уже было перегрузить метод Add для случая, когда надо задать только имя и значение параметра, и предлагают его использовать именно в этом случае, великой рекомендацией использовать метод Всегда, дело твоё :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048820
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAпропущено...
Гы... То есть шесть строк вместо двух, круто чё :)
Ты код не тот процитировал, 6 строк - это про оператор "??". Во-вторых, "кручо чё": писать лапшекод и ифами, или писать человеческий код с тернарными операторами. Гавнокодерам не понять, забей.Код я процитировал тот. В твоём коде добавление одного параметра с указанием его типа размера занимает 3 строки, следовательно добавление двух параметров занимает 6 строк. Оператор "??" и лапшекод с ифами - это не ко мне. Так что кто кого понять не может, это ещё вопрос :)

МСУskyANAВообще-то у меня совещание было.
Твой код - это использование того же метода Add, только на четыре строки больше. На фига? :)
Почему на 4, откуда эта цифра? Это не просто использование метода Add, это еще и следование рекомендациям :)У меня добавление параметров занимает 2 строки, у тебя 6, почему на 4? Попробуй вычитанием воспользоваться :)
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048909
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУ, ладно, я понял, ты включил упрямого дурочка.
Не, мужик, это ты криво вопросы задаешь.

skyANAСчитай замечание о том, что метод AddWithValue сделали потому, что нельзя уже было перегрузить метод Add для случая, когда надо задать только имя и значение параметра, и предлагают его использовать именно в этом случае, великой рекомендацией использовать метод Всегда, дело твоё :)
В идеале было бы отлично перегрузить несколькими вариантами AddWithValue. Вся эта бадяга с "косячностью" Add зародилась еще со времен первых двух версий дотнета (1.0 и 1.1), где унылые кодирующие обезьянки в виде индусов очень неудобно и опасно перегрузили Add. Со следующей версии дотнета (2.0) решили немного долатать механизм, и не придумали ничего лучше, как добавить AddWithValue. Но видно испугались сделать еще парочку (с типом, хотя бы) и оставили всё как есть, порекомендовав именно этот подход.

skyANAКод я процитировал тот. В твоём коде добавление одного параметра с указанием его типа размера занимает 3 строки, следовательно добавление двух параметров занимает 6 строк.
"Следовательно" - это унылый вывод. В моем коде был только один параметр (3 строки), а то, что ты там что-то перемножил на два - твои проблемы. Либо выражайся яснее, либо не выражася вовсе. Ну да, кода для инициализации больше, и что? Чере CreateParameter еще будет больше на 2 строчки, но тем не менее - это универсальный и хороший способ создания "своих" параметров, заложенных аж в DbCommand.

skyANAО, великий оптимизатор, ты крут! IndexOf по листу из двух элементов это же так медленно :)
Это полный алес капут. И после этого ты мне будешь что-то говорить о моей неправоте? Мужик, ты аццки жжешь!
Зачем в цикле постоянно осуществлять поиск через IndexOf? Ппц просто...

skyANAОператор "??" и лапшекод с ифами - это не ко мне. Так что кто кого понять не может, это ещё вопрос :)
Ок, я думал ты прооператор говорил.

skyANAУ меня добавление параметров занимает 2 строки, у тебя 6, почему на 4? Попробуй вычитанием воспользоваться :)
Выше написал, выражайся яснее.
...
Рейтинг: 0 / 0
DataSet и SQL Server
    #38048935
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУsphinx_mvИ это недоразумение утверждает, что оно "читает документацию"...
http://support.microsoft.com/kb/303247
Твой клинический случай особый, попробую трепанировать твой череп еще разок.
Вот код из документации:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<%@ Language="C#" Inherits="MyStuff.MyClass" %>
<HTML>
    <body>
        <form id="MyForm" runat="server">
        <asp:textbox id="MyTextBox" text="Hello World" runat="server"></asp:textbox>
        <asp:button id="MyButton" text="Echo Input" Onclick="MyButton_Click" runat="server"></asp:button>
        <asp:label id="MyLabel" runat="server" />
        </form>
    </body>
</HTML>


Вопрос в лоб. Это всё HTML?
Т.е., мусье теги читать не умеет?
Или, может, мусье не в курсе, что находится между тегами <HTML>...</HTML>?
Подсказка из зала - разметка страницы... И да: это - HTML (даже Майкрософт "его" так называет).

И, кстати, мусье, почему-то забыл взять ВТОРУЮ "часть" ЭТОГО примера от Microsoft:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MyStuff
{
    public class MyClass : Page
    {
        protected System.Web.UI.WebControls.Label MyLabel;
        protected System.Web.UI.WebControls.Button MyButton;
        protected System.Web.UI.WebControls.TextBox MyTextBox;

        public void MyButton_Click(Object sender, EventArgs e)
        {
            MyLabel.Text = MyTextBox.Text.ToString();
        }
    }
}

Может, мусье, хотя бы с трех (ну, ладно - с пяти) раз угадает, ЧТО расположено во второй части примера из непрочитанной им документации?
НЕТ! НЕ УГАДАЕТ!!! Мусье слишком рано взялся за изучение модели "code-behind"...
ЗЫ. Мусье ТОЧНО не перепутал форум?
МСУsphinx_mvФиниш.
Финиш может быть только в твоем сознании, которое не понимает сути.
Улыбнуло...
МСУsphinx_mvPS. Некотое время назад один мой знакомый завлаборатории сказал: ничего на свете хуже нету, чем дурак с инициативой...
Правильно, согласен с твоим знакомым. Поэтому тебе пока рано писать про .NET на форумах.
Вам памперс уже поменяли? Пора повторить эту процедуру...
МСУsphinx_mvВаша "квалификация" и "опыт" совершенно не оспариваются (по причине полного отсутсвия).
И то, что Вы ни разу не сталкивались с поведением параметров при присвоении им null-значения (не путать с DBNull) - это в очередной раз это доказывает.
Моя квалификация и опыт подсказывает мне, что есть такое понятие в дотнете, как тернарность. И твой гавнокод пишется за 2 строчки кода.

Код: c#
1.
2.
name1.Value = row[0] ?? DBNull.Value;
name2.Value = row[1] ?? DBNull.Value;



Упс?
УРА!
МСУ сделал плохо читаемый и, соотвественно, не менее плохо сопровождаемый код, но зато съэкономил процессору пару тактов "машинного времени"!!!
Орден ему за это!.. Ну, хотя бы медаль...
МСУP.S. Так что ты там хотел сэкономить на строчках кода по поводу AddWithValue?
Я же говорю: МСУ - ЛАМЕР!
На проверке правильности входных данных НЕ ЭКОНОМЯТ! То есть - ВООБЩЕ!
Хотите ходить по граблям - никто не запрещает: можете исключить эту проверку.
Но потом не жалуйтесь на разбитый лоб и отбитые яйца.

И, специально для ламеров, "которые не в курсе": проверка валидности данных при использовании AddWithValue должна быть точно такой же.

А еще ламеры могут не оборачивать исполняемые блоки в try-catch-finally и не выполнять обработку исключительных ситуаций...
Это же ж сколько нажатий на клавишы съэкономится!..

МСУP.S2. По вопросу AddWithValue я тебе привел банальный - вопросы будут, клоун?
По сути, к ВАМ вопросов я не только больше НЕ ИМЕЮ, но и никогда особо и НЕ ИМЕЛ: "дуракам с инициативой" вопросов не задают...
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataSet и SQL Server
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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