2015-06-05 2 views
1

Я не самый лучший на VB или SQL &, нужно немного помочь с этим. Было просто любопытно, как запросить это.Visual Basic Query

ТАБЛИЦЫ:
Игровой стол Включает Game ID и несколько других вещей
Таблица Обзор включает идентификатор обзора и несколько других вещей
Справочная таблица содержит игры ID Linking к ID Обзорной Оба являются первичными ключами своих собственных таблиц ,

QUERY:
Мне нужен запрос, который будет выбирать * из таблицы обзора, где ИД игры соответствует метке, которую я имею. (LblGameID.Text)
Я знаю, что это неправильно, но я это на данный момент:

Dim strQuery As String = "SELECT * FROM Review WHERE GameID = '" & lblGameID.Text & "' " 
+0

Ну, для стартеров это «неправильно», потому что он широко открыт для SQL-инъекций. Вы должны использовать параметры запроса вместо ввода пользовательского ввода в качестве кода. Кроме того, что именно не работает? Что происходит, когда вы запускаете свой код? Есть ли ошибка компилятора? Исключение во время выполнения? Как это происходит? – David

+0

Похоже, вам нужно использовать JOIN. «Ссылка» - это то, как вы получаете игру с помощью ReviewID или получаете обзор с помощью GameID – Plutonix

+0

, кажется странным, что вы получите значение для запроса с метки, предполагая, что lbl означает ярлык. Кроме того, есть идентификатор GameID? Если это так, то вы shoudlnt 'его обернули в тики. Кроме того, я не вижу, где вы выполняете этот запрос и имеете набор записей для работы. – xQbert

ответ

1

Этот метод струнной-композитинга запрос, как правило, плохая идея, но если у вас есть полный контроль того, что происходит в запрос как lblGameID.Text, тогда все в порядке. Обычно лучше создать хранимую процедуру, которая запускает этот запрос:

select * 
from review r 
    join reference ref on r.reviewID = ref.reviewID 
where ref.gameID = @gameID 

, а затем вызвать его из VB, выбрасывая возвращаемые данные в DataTable. Что-то вроде:

Dim conn As New SqlConnection("connectionString") 
    Dim cmd As New SqlCommand("exec reviewDataGet @gameID", conn) 
    cmd.Parameters.AddWithValue("@gameID", lblGameID.Text) 
    Dim dt As New DataTable 
    Dim da As New SqlDataAdapter 
    da.Fill(dt)