【发布时间】:2016-06-15 06:17:23
【问题描述】:
当我对查询进行参数化时,出现“必须声明标量变量”的错误。我是使用 SQL Server 的新手。而我使用的版本是SQL Server 2012。下面是sn-p的代码:
Protected Sub Main_Page
Dim con as OleDbConnection
Dim cmd as OleDbCommand
Dim query as String
con = New OleDbConnection("Provider=SQLNCLI11;Data Source=ARIES-PC\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=SchoolDB")
con.Open()
query = "INSERT INTO Instructors(FirstName,LastName,Address,Contact_Number) VALUES (@fname,@lname,@address,@number)"
cmd = New OleDbCommand(query, con)
cmd.Parameters.AddWithValue("@fname", txtFirstName.Text)
cmd.Parameters.AddWithValue("@lname", txtLastName.Text)
cmd.Parameters.AddWithValue("@address", txtAddress.Text)
cmd.Parameters.AddWithValue("@number", txtContact.Text)
cmd.ExecuteNonQuery()
cmd.Dispose()
con.Close()
Response.Write(<script>alert('Success!')</script>)
End Sub
【问题讨论】:
-
您应该查看Can we stop using AddWithValue() already? 并停止使用
.AddWithValue()- 它可能会导致意想不到和令人惊讶的结果... -
此外,您应该对实现
IDisposable接口的任何对象使用using语句。除此之外,您的代码似乎应该可以正常工作。 -
您为什么使用 OleDb 而不是本机 SqlClient 库?通常,此错误意味着您的某个字段或表格拼写错误并被错误地视为参数。
-
但是当我运行我的代码时,我得到了一个错误,“必须声明标量变量”.. 什么是合适的解决方案?
-
没什么可学习的,只需使用 SQL 更改 OleDb ...添加命名空间就可以了。您的代码将起作用。
标签: asp.net sql-server vb.net