Выход из значений в SQL-запросах (C# с коннектором SQL)

Я знаю, что могу использовать параметры, но что правильный путь состоит в том, чтобы выйти из строковых последовательностей? Запрос мог быть похожим на это:

"INSERT INTO records (ReferenceID,Name,Note,Author) VALUES ('" + ID+ "','" + addlevel.textBox1.Text + "','"+addlevel.textBox2_note.Text+ "','"+Program.Username+"')";

Я ТОЛЬКО любопытен, просто хочу знать:)

Править: Но что относительно этого? "CREATE TABLE "+string".... параметры не может использоваться здесь!

8
задан Snake 7 January 2010 в 13:10
поделиться

4 ответа

Если вам нужно выполнять операции с базой данных, такие как создание таблиц, то вместо выполнения SQL-строк следует использовать SQL Server Management Objects.

Для операций CRUD параметры абсолютно единственный истинный путь.

UPDATE: Похоже, что клиентская библиотека MySQL содержит вспомогательный метод для этой непродуманной задачи. Можно вызвать MySqlHelper.EscapeString(string).

16
ответ дан 5 December 2019 в 04:58
поделиться

Правильным способом является использование параметров.

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

.
14
ответ дан 5 December 2019 в 04:58
поделиться

Я думаю, что единственное, что вам нужно сделать, это значение = value.Replace("'', "'')

Конечно, вы не должны этого делать, но вы это знаете.

Правка: Очевидно, что все это неправильно для MySQL. Хотя для PostgreSQL, MS SQL и Oracle это должно работать.

.
0
ответ дан 5 December 2019 в 04:58
поделиться

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

string EncodeMySqlString(string value) {
   return value.Replace(@"\", @"\\").Replace("'", @"\'")
}
7
ответ дан 5 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: