查询 "must declare scalar variable"

Query "must declare scalar variable"

执行命令后我的 vb.net 例程出错,我得到一个错误:

must declare @nameD variable

SQL服务器中的table是:

name: TAB,
ID integer unique,
NameD varchar(50)

我不明白为什么会出现此错误。

是因为我在本地系统上使用了 OLEDb 吗?我只是将项目转换为 SQL 服务器,还是查询有误?

请注意,我使用这些参数打开连接:

Dim strsql As String = ""
Dim strConn As String = "Provider=MSOLEDBSQL;Server=0.0.0.0;Database=****;UID=sa;PWD=***;"
Dim Conn As New OleDbConnection

这是函数

Public Function Ins() as integer

     strsql = "INSERT INTO TAB (nameD) VALUES (@nameD)"

     Dim CMD as New OleDbCommand(strsql, Conn)

     With CMD
               .Parameters.Add("@nameD", OleDbType.VarChar).Value = "aaa"
              .ExecuteNonQuery()
     End With

     CMD = Nothing

     Dim COnt As Long
     Dim cmdC As OleDbCommand = New OleDbCommand("SELECT@@IDENTITY", Conn)
     COnt = CType(cmdC.ExecuteScalar, Integer)
     Return COnt
end function

我什至尝试过

CMD.Parameters.AddWithValue("@nameD", "aaa")

我不确定您为什么要使用 OleDb 连接到 SQL 服务器而不是 SqlClient 但是,如果您要这样做,我不会认为支持命名参数。您需要在 SQL 代码中使用通用参数占位符:

strsql = "INSERT INTO TAB (nameD) VALUES (?)"