在 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 函数的数据集