C # строка. Заменить проблему - PullRequest
       18

C # строка. Заменить проблему

0 голосов
/ 25 сентября 2011

У меня есть такая строка:

string query = "INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, @address, @address2)"

затем я заменяю @address на 'Улицу Вязов', используя

query = query.Replace("@address", "'" + "Elm Street" + "'");

и результат становится:

INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, 'Elm Street', 'Elm Street'2)

как получить результат:

INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, 'Elm Street', @address2) ?

Ответы [ 3 ]

5 голосов
/ 25 сентября 2011

Если это SQL-запрос, вы ошибаетесь - вы должны использовать SqlParameter для параметризации вашего запроса, нет необходимости в замене строки:

string query = "INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, @address, @address2)";

using (SqlCommand cmd = new SqlCommand(query, myConnection))
{
    cmd.Parameters.Add(new SqlParameter("@address", SqlDbType.NVarChar)).Value = "Elm Street";
    //add other parameters

    cmd.ExecuteNonQuery();
}
2 голосов
/ 25 сентября 2011

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

Если вам действительно нужно сделать это по какой-то странной причине, вы можете использовать регулярное выражение для сопоставления всех параметров и заменить один из них:

query = Regex.Replace(query, @"@\w+", m => {
  if (m.Value == "@address") {
    return "'Elm Street'";
  } else {
    return m.Value;
  }
});
0 голосов
/ 25 сентября 2011

Как насчет:

string query = "INSERT INTO CUSTOMER (id, name, address, address2) VALUES(@id, @name, @address1, @address2)";
query = query.Replace("@address1", "'Elm Street'");

Иногда самое простое решение - правильное. Не в этом дело. Вы действительно должны использовать подход SqlCommand.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...