Sql Visual Basic查询

Sql Visual Basic查询,sql,vb.net,Sql,Vb.net,我在VB或SQL方面不是最好的&需要一些帮助。 我只是好奇如何质疑这一点 表格: 游戏表包括游戏ID和一些其他内容 审查表包括审查ID和其他一些内容 引用表包含链接到审阅ID的游戏ID,这两个ID都是各自表的主键 查询: 我需要一个查询,从游戏ID与我的标签匹配的评审表中选择*。(lblGameID.Text) 我知道这是错误的,但我现在有: Dim strQuery As String = "SELECT * FROM Review WHERE GameID = '" & lblGam

我在VB或SQL方面不是最好的&需要一些帮助。 我只是好奇如何质疑这一点

表格:
游戏表包括游戏ID和一些其他内容
审查表包括审查ID和其他一些内容
引用表包含链接到审阅ID的游戏ID,这两个ID都是各自表的主键

查询:
我需要一个查询,从游戏ID与我的标签匹配的评审表中选择*。(lblGameID.Text)
我知道这是错误的,但我现在有:

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

这种字符串合成查询的技术通常是一个坏主意,但是如果您完全可以控制作为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)

首先,这是“错误的”,因为它非常容易受到SQL注入攻击。您应该使用查询参数,而不是作为代码执行用户输入。除此之外,到底有什么不起作用?运行代码时会发生什么?是否存在编译器错误?运行时异常?它是如何失败的?听起来你需要使用连接
Reference
是您使用ReviewID获取游戏的方式,或者使用GameId获取评论的方式。奇怪的是,假设lbl表示label,您将从标签中获取要查询的值。另外GameID是数字的吗?如果是这样的话,你就不应该把它包起来。此外,我看不到您在何处执行此查询并使用记录集。您收到的错误消息是什么?