转换为';字符串';至';SQlCommand';在vb.net中

转换为';字符串';至';SQlCommand';在vb.net中,sql,vb.net,ado.net,Sql,Vb.net,Ado.net,我是一个vb程序员新手。我相信这很简单,但我做不好 无法将“String”类型的值转换为“SQLCommand” 这是错误 Public Sub InsertPackageDetails(ByVal PackageName As String, ByVal PackageDescription As String, ByVal DateOfInstallation As DateTime, ByVal ImportPackageStatus As String) Dim SQL As S

我是一个vb程序员新手。我相信这很简单,但我做不好

无法将“String”类型的值转换为“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?
非常感谢您的帮助。

您可以在这里看到创建命令的各种方法

您应该使用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

您可以在这里看到创建命令的各种方法

您应该使用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

-您不应该将SQL语句连接在一起—使用参数化查询来避免SQL注入—请检查字符串和SqlCommand之间没有隐式转换。您需要创建SqlCommand类的新实例,并将查询文本传递给它。-您不应该将SQL语句连接在一起—使用参数化查询来避免SQL注入—请检查字符串和SqlCommand之间没有隐式转换。您需要创建SqlCommand类的新实例,并将查询文本传递给它。