powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataSet и SQL Server
25 сообщений из 54, страница 2 из 3
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
25 сообщений из 54, страница 2 из 3
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / DataSet и SQL Server
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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