TheRealProgrammer Ответов: 1

Остановите C# от чтения double; mysql от сбоя


Привет,

При попытке удалить 2 пользователя из базы данных одновременно, например < DELETE ... где id = '23, 54' > приведет к сбою скрипта C#.

Как я могу остановить C# или MySQL от чтения всего? Мне просто нужно, чтобы первый идентификатор, "23", был отправлен в MySQL.

При выполнении этого требования я получаю эту ошибку от C#:
Object reference not set to an instance of an object.


Что я уже пробовал:

Строки sSql = "удалить из logintb.таблица mytable, где имя = '" + newusername + "' заказа по ID предел 1;');";
DBAccess.InsertRandomItem(sSql);

1 Ответов

Рейтинг:
4

Garth J Lancaster

Немногие вопросы

1) Вы не показываете нам никакого полезного кода C#, кроме (2)
2) то, что вы показываете, - это то, что ваш SQL подвержен атакам SQL-инъекций, вместо этого вы должны научиться использовать параметры
3) сам синтаксис инструкции SQL некорректно - вам нужно

DELETE from login.mytable where id IN (23, 54);


TheRealProgrammer

Единственная проблема заключается в том, что когда переменная newusername является обычным числом, например 23, она работает. Когда кто-то пытается ввести 2 идентификатора или двойное число, например 23, 24 или 33,4, он перестает работать.

Я бы не хотел, чтобы пользователь вводил какие-либо "," или что-то в этом роде. Newusername - это текстовое поле.

Garth J Lancaster

затем вы должны санировать свой ввод и действовать соответственно - используя SQL-оператор, который я вам дал, Вы можете иметь

IN (x)

или

IN (x, y)

это довольно легко сделать параметром из вашего текстового поля - но бизнес-правила и проверка должны быть сделаны вами, чтобы соответствовать требованиям

TheRealProgrammer

Я не понимаю, как я могу отформатировать само текстовое поле, чтобы, если кто-то наберет", " или другие символы, оно было удалено.

Например:

InputUserID = " 24,2"
**преобразовать**
OutputUserID = " 242"

Garth J Lancaster

есть несколько способов -

например удалите все нечисловые цифры,
проверка текстового поля,
запретить использование нечисловых клавиш в этом текстовом поле

Я думаю, что есть более серьезная проблема, связанная с тем, что пользователь вводит номер, который он не собирался-возможно, он выбирает запись для удаления из сетки или что-то в этом роде, а затем использует идентификатор из нее

TheRealProgrammer

если (регулярное выражение.IsMatch(modifyIdInput.Текст, "[ ^ 0-9]"))
{
**код**
}

будут делать это. Спасибо!