在 vb.net 中将“字符串”转换为“SQlCommand”

Posted

技术标签:

【中文标题】在 vb.net 中将“字符串”转换为“SQlCommand”【英文标题】:Convert 'String' to 'SQlCommand' in vb.net 【发布时间】:2020-05-31 05:56:30 【问题描述】:

我是新手 vb 程序员。我确信这很简单,但我做不到。

“字符串”类型的值无法转换为“SQLCommand”

这是错误。

Public Sub InsertPackageDetails(ByVal PackageName As String, ByVal PackageDescription As String, ByVal DateOfInstallation As DateTime, ByVal ImportPackageStatus As String)
    Dim SQL As String = "Insert into PackageInstallation(PackageName,PackageDescription,DateOfInstallation,ImportPackageStatus) values('" + PackageName + "','" + PackageDescription + "','" + DateOfInstallation + "'," + ImportPackageStatus + ") "
    DBHelper2.ExecuteNonQuery(SQL)
End Sub

如何将作为字符串的 SQL 转换为 SQLCommand? 感谢您的帮助。

【问题讨论】:

SQL Injection alert - 您应该将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables 字符串和SqlCommand 之间没有隐式转换。您需要创建 SqlCommand 类的新实例并将查询文本传递给它。 【参考方案1】:

您可以在此处查看创建命令的各种方法。 https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.-ctor?view=dotnet-plat-ext-3.1

您应该使用 Using...End Using 块,以便您的连接和命令将被关闭和处置,但您需要将这些对象放在使用它们的本地方法中。

我不得不猜测数据库中字段的类型和大小。签入数据库并相应地更正代码。

Public Sub InsertPackageDetails(ByVal PackageName As String, ByVal PackageDescription As String, ByVal DateOfInstallation As DateTime, ByVal ImportPackageStatus As String)
    Dim SQL As String = "Insert into PackageInstallation(PackageName,PackageDescription,DateOfInstallation,ImportPackageStatus) 
                          Values(@PackageName, @PackageDescription, @DateOfInstallation, @ImportPackageStatus;"
    Using cn As New SqlConnection("Your connection string"),
            cmd As New SqlCommand(SQL, cn)
        With cmd.Parameters
            .Add("@PackageName", SqlDbType.VarChar, 100).Value = PackageName
            .Add("@PackageDescription", SqlDbType.VarChar, 100).Value = PackageDescription
            .Add("@DateOfInstallation", SqlDbType.DateTime).Value = DateOfInstallation
            .Add("@ImportPackageStatus", SqlDbType.VarChar, 100).Value = ImportPackageStatus
        End With
        cn.Open()
        cmd.ExecuteNonQuery()
    End Using
End Sub

【讨论】:

以上是关于在 vb.net 中将“字符串”转换为“SQlCommand”的主要内容,如果未能解决你的问题,请参考以下文章

将 vb.net 类对象转换为 vb.net 中的 JSON 字符串

如何在 VB.NET 中将 '<unnamed portal 1>' 转换为 plpgsql 函数的数据集

vb.net 如何将字符串转换为integer类型的数据?

如何使用 VB.NET 将 DMS 转换为 DD(坐标)

使用 vb.net 将字符串时间/日期值转换为 dateTime 值

如何在 VB.NET 中将 DataGridView 导出为 Excel 格式