【发布时间】:2015-01-15 16:50:32
【问题描述】:
我已经在这个 sql 语句上工作了大约 2 个小时,但我无法让它为我的一生工作。我很确定所有列名和表名都是正确的,但我在第一期的第三行出现语法错误。你们可以仔细检查我的陈述以确保我没有遗漏任何东西。另外,我在我的 sql 服务器上运行了这段代码,它工作了,所以我想知道为什么它不能在 vb.net 中工作。也许 vb.net 不支持这里的东西?
Try
Dim A As String = CBShear.Text
Dim B As String = CBName.Text
Using conn1 As New SqlConnection(connstring)
conn1.Open()
Using comm1 As SqlCommand = New SqlCommand("INSERT INTO Production.dbo.tblFabWipLog (FabWipId, Shear, CheckedIn, NameIn, CartType)" _
& "SELECT TOP 1 FabWipID, cast('" & A & "' as varchar), Cast(getdate() as smalldatetime), cast('" & B & "' as varchar), Cast('Mother' as varchar)" _
& "FROM production.dbo.tblFabWipID WHERE FabWipID NOT IN (Select tblFabWipID.FabWipID" _
& "FROM Production.dbo.tblFabWipID LEFT JOIN production.dbo.tblFabWipLog ON tblFabWIPID.FabWipID = tblFabWipLog.FabWipID WHERE Active = 1 AND CheckedOut IS NULL" _
& "AND NOT CheckedIn IS NULL) AND LocID LIKE 'M%' ORDER BY LocID ASC)", conn1)
Dim dt As DataTable = New DataTable
Dim rs As New SqlDataAdapter
rs.SelectCommand = comm1
rs.Fill(dt)
DGVCheck.DataSource = dt
End Using
End Using
Catch ex As Exception
MsgBox(ex.ToString)
End Try
【问题讨论】:
-
更新,第4行sql语句。
-
这段代码容易受到sql注入攻击。它实际上是在乞求被黑。
-
我将其更改为 .addwithvalue 参数以使其更安全。我还在我的标准 sql 连接中集成了安全性,并且我还只允许用户通过一个组合框输入数据,该组合框有一个可以从中选择的下拉列表。用户不能输入自己的文本。另外,我怀疑这是否会出于没有理由的目的而被黑客入侵。
-
@JoelCoehoorn 我只使用“.text”应用程序进行测试。请参阅上面的评论。