【问题标题】:Convert 'String' to 'SQlCommand' in vb.net在 vb.net 中将“字符串”转换为“SQlCommand”
【发布时间】: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 类的新实例并将查询文本传递给它。

标签: sql vb.net ado.net


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2012-06-23
    相关资源
    最近更新 更多