Увеличьте значение базы данных, используя asp.net - PullRequest
0 голосов
/ 10 сентября 2011

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

SqlConnection con;
SqlCommand cmd;
private void update()
{
    string a, b;
    int c;
    con = new SqlConnection("server=.;uid=sa;pwd=mayank;database=movie");
    a = Session["timings"].ToString();
    b = Session["seats"].ToString();
    c = Convert.ToInt32(b);
    con.Open();
    cmd = new SqlCommand("update bodyguard set silver_class = silver_class ' " + - c + " 'where timings = ' " + a + "' ", con);
    cmd.ExecuteNonQuery();
    con.Close();
}

С этим кодом возникает исключение .... поэтому, пожалуйста, помогите мне.

Ответы [ 4 ]

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

Я рекомендую параметризованный запрос вместо конкатенации строк, которая уязвима для SQL-инъекций.И я предлагаю вам использовать хранимую процедуру вместо встроенного SQL.

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

У вас было несколько одинарных кавычек вокруг целочисленного значения.попробуйте это

"update bodyguard set silver_class = (silver_class - " + c + ") where timings = '" + a + "'"

Небольшой совет, вы должны использовать блоки try{}catch{} для обработки потенциальных ошибок в вашем коде.Когда вы конвертируете число с Convert.toInt32(), вы должны попытаться поймать исключение FormatException.А с con.open() до con.close вы можете попытаться поймать SQLException

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

Не используйте сцепленные строки для создания SQL-статистики, это действительно плохая форма. Сделай так:

cmd = new SqlCommand("update bodyguard set silver_class = silver_class - @c where timings = @a", con);
 cmd.Parameters.AddWithValue("@c", c);
 cmd.Parameters.AddWithValue( "@", a);
0 голосов
/ 10 сентября 2011

Ваша команда SQL неверна, вы производите следующее:

обновить набор телохранителей silver_class = silver_class '- [valueC]', где timings = '[valueA]'

Например, вы забыли пробел до where, и я не уверен, как должна выглядеть часть silver_class, потому что неясно, чего вы там пытаетесь достичь.

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