vb.net解析查询灵活列名时出错

vb.net error in parsing query of flexible column name

我的查询有问题。

我正在尝试更新另一个数据表中存在的数据集。

我的数据表 ds1.table(0) 有 18 列和 2 个主键,数据表 ds2.table(0) 有灵活的行数。

如果 ds1.table(0) 的列名存在于 ds2.table(0) 的行中,我想更新我的数据库。

 If rc1 > 0 Then
        For Each co As DataColumn In ds1.Tables(0).Columns
            Dim ColName As String = co.ColumnName

            If rc2 > 0 Then
                For Each ro As DataRow In ds2.Tables(0).Rows
                    Dim RoName As String = ro(0).ToString

                    If RoName.Contains(ColName) Then
                        Dim cmnd1 As SqlCeCommand

                        Try
                            con.Open()
                            Dim cry As String = "UPDATE serdate SET ['" & ColName & "'] = @date WHERE ((company = '" & Company & "') AND (number = '" & number & "'))"
                            cmnd1 = New SqlCeCommand(cry, con)
                            cmnd1.Parameters.Add(New SqlCeParameter("@date", Now))
                            cmnd1.ExecuteNonQuery()
                            MsgBox("Update Success")
                        Catch ex As Exception
                            MsgBox("Query Error! " & ex.Message)
                        Finally
                             con.Close()
                        End Try
                    End If
                Next
            End If
        Next
    End If

我遇到了一些错误。

错误是

There was an error in parsing query: Column Name is not valid

错误是由于您试图更新数据库中不存在的列引起的。查看 table 定义以确保该列确实存在。但是,您将 ' 放在列名周围,这在引用列时不是必需的,并且很可能导致错误。删除 ' 并使用有效的列名来解决此问题。

顺便说一句,您的 SQL 查询仍然容易受到 SQL 注入的攻击。您应该为放入查询中的每个变量使用参数,例如放入日期的方式。