gpt4 book ai didi

mysql - vb.net sql select语句查找所有Not Null的,我需要使用参数吗?

转载 作者:行者123 更新时间:2023-11-29 09:25:28 26 4
gpt4 key购买 nike

我只是想查找 SQL 数据库表中不等于 null 的所有记录。因此,当我编写 select 语句时,我会像对待其他任何事情一样对待它,以避免 sql 注入(inject)问题。

这是一个例子:

Command = New SqlCommand
connection.Open()
Command.Connection = connection
Command.CommandType = CommandType.Text
Command.CommandText = "SELECT * FROM MyTable WHERE [Comments] IS NOT NULL" 'Have tried [Comments]=@Comments
'Command.Parameters.AddWithValue("@Comments", "IS NOT NULL")
da = New SqlDataAdapter(Command)
da.Fill(ds, "MyTable")
For Each roww As DataRow In ds.Tables("MyTable").Rows
If (Not IsDBNull(roww("Comments"))) Then
IDLIST.Add(roww("TempID"))
Comments_RichText.AppendText("Date of Service: " & roww("FromDate") & " | " & roww("Name") & vbNewLine & roww("Comments") & vbNewLine & vbNewLine)
End If
Next
connection.close

如您所见,我尝试使用参数来避免 SQL 注入(inject)(但不返回任何内容),也尝试不使用参数来返回正确的行。为什么参数方式不起作用?由于我没有在语句中连接任何内容(例如 TextBox.Text 或字符串),因此我是否必须使用 IS NOT NULL 参数?任何帮助都会很棒,因为我不明白为什么一种方法有效而另一种方法无效。

最佳答案

参数化将不起作用,因为这将使用相等运算符进行检查,这不适用于像 IS NOT NULL 这样的文字。它不会按照您的想法工作(它不只是用您的参数重写字符串)。

不过,使用空合并,这仍然很容易实现:

 SELECT * FROM MyTable WHERE ISNULL([Comments].'Empty') != @Comments

如果您明白我的意思,当您想查找空的时,@Comments 为“空”。显然,您可以使用任何您想要的字符串变量来代替 'Empty'

关于mysql - vb.net sql select语句查找所有Not Null的,我需要使用参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59667863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com