sql - VB.NET SQL 查询失败。必须声明 Scalar 但它已经被删除
问题描述
好久没用VB.NET了,上次用VB写的,是VB6。天哪,我怀念过去的美好时光。无论如何,尝试在数据库上运行查询。我的代码如下:
'Create a Connection object.
myConn = New SqlConnection("Server=localhost\SQLEXPRESS;Database=dwt-monitor;Trusted_Connection=True;")
'Create a Command object.
myCmd = myConn.CreateCommand
myCmd.CommandText = "select log_time as [Log Time], log_name as [Log Name], log_desc as [Log Description], type_name as [Log Type] from log as log
left join log_type as lot on log.log_id=lot.type_id where type_name= @variable"
myConn.Open()
myCmd.Parameters.AddWithValue("@variable", type)
myCmd.ExecuteNonQuery()
Dim dataAdapter = New SqlDataAdapter(myCmd.CommandText, myConn.ConnectionString)
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
dataAdapter.Fill(table)
dgvHardwareLog.DataSource = table
myConn.Close()
我收到此错误:
System.Data.SqlClient.SqlException:'必须声明标量变量“@variable”
谁能告诉我哪里出错了?我正在添加价值。但是,唉,有些事情是不正确的。
谢谢 :)
解决方案
尝试更改以下行:
Dim dataAdapter = New SqlDataAdapter(myCmd.CommandText, myConn.ConnectionString)
使用以下内容,传递命令而不是仅传递命令 text。此外,删除myConn.ConnectionString:
Dim dataAdapter = New SqlDataAdapter(myCmd)
此外,您可以删除以下行:
myCmd.ExecuteNonQuery()
问题是您在SqlDataAdapter构造函数中传递命令文本,而@variable参数会丢失,因为它已添加到myCmd。
在https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/dataadapter-parameters查找更多详细信息。
推荐阅读
- r - knitr::kable 表中的灵活列名
- java - Spring Data JPA PagingAndSortingRepository 对加密数据而不是解密数据进行排序
- python - 通过云功能将数据从 pubsub 写入 bigtable
- npm - 当我尝试使用 npm 安装软件包时,它给了我一个权限被拒绝的错误
- c++ - 如何接受可修改和不可修改的参数?
- python - Python TKinter:如何在 GUI 中实现与 input() 相同的效果?
- javascript - 检查xml是否不同,无论是整个xml还是只是
- c++ - 在函数中使用 mmap()
- javascript - 基于 React JSON 的表单卡在 setstate 中
- awk - 使用 awk 处理 html 相关的 Gift-format Moodle 问题