Я работаю над программой, которая будет запрашивать личную базу данных фильмов. Морщины в плане выбирают жанры. Например, допустим, у меня есть 3 флажка Action, Adventure и Comedy. Фильм может попасть в один жанр или несколько жанров. Фильм может быть действием или действием/комедией.Запрос на основе флажков
Ниже приведен фрагмент кода, с которого я начал ... но не учитывает все варианты. Функция Fill_Grid заполняет dataGridView. Он работает, если фильм имеет один жанр или пользователь выбирает точно такие же жанры, что и у фильма в базе данных. Что должно случиться, если фильм - Комедия действия, он должен появиться, если пользователь выбирает только действие или только комедию ИЛИ Действие и Комедию.
Пожалуйста, задавайте вопросы, если это не имеет смысла.
Спасибо заранее, -J
string str_SQL = "SELECT Name, File, Action, Fantasy, Horror, Thriller, Adventure, Animation, Comedy, Crime, Documentary, Drama, Family, Games, Mystery, Romance, SciFi, War FROM tbl_Main WHERE Action = " + chk_Action.Checked +
" AND Fantasy = " + chk_Adv.Checked +
" AND Horror = " + chk_Hor.Checked +
" AND Thriller = " + chk_Thrill.Checked +
" AND Adventure = " + chk_Adv.Checked +
" AND Animation = " + chk_Anim.Checked +
" AND Comedy = " + chk_Com.Checked +
" AND Crime = " + chk_Crime.Checked +
" AND Documentary = " + chk_Doc.Checked +
" AND Drama = " + chk_Drama.Checked +
" AND Family = " + chk_Fam.Checked +
" AND Games = " + chk_Game.Checked +
" AND Mystery = " + chk_Mys.Checked +
" AND Romance = " + chk_Rom.Checked +
" AND SciFi = " + chk_Sci.Checked +
" AND War = " + chk_War.Checked + ";";
Fill_Grid(str_SQL);
Вы всегда должны использовать [_parameterized queries_] (http://www.codinghorror.com/blog/2005/04/give-me- parameterized-sql-or-give-me-death.html) Этот тип кодов открыт для атак [_SQL Injection_] (http://en.wikipedia.org/wiki/SQL_injection). –
@Tom - потому что если у вас есть комедия действий, и вы проверяете действие и романтику, он все равно будет возвращен. – LittleBobbyTables
Я первый, кто указал новичкам на опасности SQL Injection, но в этом случае я не вижу, как это может произойти – Steve