des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

C# конкатенация строк?

каким образом можно вставить много значений в строку чтобы не городить такое

sql = @"
                            UPDATE sc_post16.t_trains
                            SET scale_id = " + e 
                                +",f_time = " + date.ToString("yyyy-MM-dd HH:mm:ss")
                                +",w_number =" + name[1]
                                +",brutto = " + name[2]
                                + ",tara = " + name[3]
                                + ",loadnorm = " + name[4]
                                + ",netto = " + name[5]
                                + ",overload = " + name[6]
                                + ",cargo = " + name[7]
                                + ",table_netto = " + name[8]
                                + ",from_station = " + name[9]
                                + ",to_station = " + name[10]
                                + ",speed = " + name[11]
                                + ",num_invoice = " + name[12]
                                + ",operator_name = " + name[13]
                                + ",smena = " + smen
                            +",WHERE w_number = " + name[1]
                              + ",AND f_time = " + date.ToString("yyyy - MM - dd HH: mm: ss")
  • Вопрос задан
  • 632 просмотра
Решения вопроса 1
newross
@newross
Product owner
Используйте параметры команды вместо конкатенации.
var commandText = "UPDATE Sales.Store SET Demographics = @demographics WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.AddWithValue("@ID", customerID);
        command.Parameters.AddWithValue("@demographics", demoXml);

        connection.Open();
        command.ExecuteNonQuery();
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
string interpolation
$"Name = {name}, hours = {hours:hh}"
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
1)Самый простой способ - String.Format.
Пишете
sql = String.Format("UPDATE ssc_post16.t_trains SET col1={0},..... colN = {N}",value1,value2 и т.д.)

2)Чуть похитрее StringBuilder. Последовательный Append каждого кусочка вашего запроса.
3)Параметризованный запрос с переменным врод "@col1","@col2" и т.д. и уже в SQLCommand передавать значения этих переменных.
4) Хранимая процедура, принимающая набор переменных и исполняющая такой запрос.
5) ORM вроде EntityFramework
Ответ написан
Комментировать
AnnTHony
@AnnTHony
Интроверт
Ответ написан
Комментировать
GavriKos
@GavriKos
Используйте StringBuilder. Или в крайнем случае string.Format.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы