VB .net运行SQl查询是否

时间:2014-06-24 14:05:52

标签: sql-server vb.net

我正在开发我的第一个可用的练习应用程序,以帮助我工作的人运行简单的查询而无需了解SQL。

我有一个简单的表单,有4个文本框条目。列,表,条件列,条件

我想要的是如果条件列为空,则运行不带where语句的查询,或者如果有条件语句则运行条件语句。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles CMDQuery.Click

    If Columntxtbox.Text <> "" Then
        If SQL.HasConection = True Then
            If Conditioncolumntxtbox.Text = "" Then
                SQL.runquery("Select " & Columntxtbox.Text & " from " & tabletxtbox.Text)
            Else
                SQL.runquery("Select " & Columntxtbox.Text & " from " & tabletxtbox.Text & " Where " & Conditioncolumntxtbox.Text & " like'%" & conditiontxtbox.Text & "%'")

                If SQL.sqldataset.Tables.Count > 0 Then
                    DGVData.DataSource = SQL.sqldataset.Tables(0)
                End If
            End If
        End If
    End If

End Sub

发生的事情是当我填写所有字段时,它工作正常,当我尝试只输入列和表字段时,没有任何反应。我认为它与第三个If有关(如果我将=更改为&lt;&gt;那么我会得到关键字的错误,例如当列和城市被填满时什么都没有填充) 任何帮助将不胜感激

感谢

1 个答案:

答案 0 :(得分:1)

缺少空格中的一部分,当没有条件时,您不会显示查询结果

If Columntxtbox.Text <> "" Then
    If SQL.HasConection = True Then
        If Conditioncolumntxtbox.Text = "" Then
            SQL.runquery("Select " & Columntxtbox.Text & " from [" & tabletxtbox.Text & "]")
        Else 
            SQL.runquery("Select " & Columntxtbox.Text & " from [" & tabletxtbox.Text & _
                         "] Where [" & Conditioncolumntxtbox.Text & "] like '%" & _
                         conditiontxtbox.Text & "%'")
         End If
         If SQL.sqldataset.Tables.Count > 0 Then
            DGVData.DataSource = SQL.sqldataset.Tables(0)
         End If
    End If
End If

但请记住,让用户直接键入值,列名和将在没有检查的情况下添加到sql文本的文本的其他部分是非常糟糕的做法。用户可以键入任何内容,您可以找到了解 sql injection 的恶意用户并破坏您的生活。

考虑到背景和要求,(一个练习应用程序)我认为你暂时可以忽略这个问题。但同样,在真实的情境中,数据是客户最重要的事情,留下这么大的漏洞真的是不专业的。