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

Posted

技术标签:

【中文标题】vb.net 解析查询灵活列名时出错【英文标题】:vb.net error in parsing query of flexible column name 【发布时间】:2018-04-11 08:08:44 【问题描述】:

我的查询有问题。

如果数据集存在于另一个数据表中,我正在尝试更新它。

我有一个数据表 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

我遇到了一些错误。

错误是

解析查询时出错:列名无效

【问题讨论】:

您的列名是否真的在开头和结尾包含' 字符? 调试和检查 ColName 的值 你真的要检查RoName.Contains(ColName)吗?例如,如果 RoName 是“Something”而 ColName 是“thing”,那将是正确的。你可能想要= 【参考方案1】:

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

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

【讨论】:

以上是关于vb.net 解析查询灵活列名时出错的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET/ASP.NET 4.0 自定义配置部分:“创建配置部分处理程序时出错”

在数据库中获取日期时出错(BETWEEN 子句| VB.NET|OLE)

在 vb.net 中,如何从数据表中获取列名

C#/VB.NET中 UDP协议连接服务器问题...运行没出错..但是收不到信息.

我的项目中的 VB.NET + MYSQL + CRUD 出错

vb.net 如何调用dll . 调用时总是出错. 找不到入口点..无法返回值... 需要详细的.谢谢!