【问题标题】:The parameterized query参数化查询
【发布时间】:2017-08-31 15:16:25
【问题描述】:

我在尝试运行页面时不断收到此错误消息..

参数化查询“(@Medication nvarchar(14),@Quantity nvarchar(9),@RequestedDate n”需要参数“@RequestedDate”,但未提供。

这是我的代码隐藏文件:

Dim conn As SqlConnection
Dim cmd As SqlCommand

'Getting today's date to store into database to let staff know when prescription was ordered
'reference for this code : - https://msdn.microsoft.com/en-us/library/system.datetime.today(v=vs.110).aspx

Dim thisDay As DateTime = DateTime.Today
Session("DateRequested") = (thisDay.ToString())
Dim Medication As String
Dim Quantity As String
Dim RequestedDate As String
Dim Pharmacy As String
Dim PatientNumber As String

Medication = txtDrug1.Text + " " + txtDrug2.Text + " " + txtDrug3.Text + " " + txtDrug4.Text + " " + txtDrug5.Text
Quantity = txtQuant1.Text + " " + txtQuant2.Text + " " + txtQuant3.Text + " " + txtQuant4.Text + " " + txtQuant5.Text

RequestedDate = Session("Date Requested")
PatientNumber = Session("PatientNumber")
Pharmacy = txtPharmacy.Text

Dim cmdstring As String = "INSERT INTO Prescription (Medication, QntyandStrength, RequestedDate, Pharmacy, PatientNumber) Values (@Medication, @Quantity, @RequestedDate, @Pharmacy, @PatientNumber)"

conn = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\User\Documents\Visual Studio 2015\WebSites\myAppointments\App_Data\Database.mdf;Integrated Security=True")
cmd = New SqlCommand(cmdstring, conn)

cmd.Parameters.AddWithValue("@Medication", Medication)
cmd.Parameters.AddWithValue("@Quantity", Quantity)
cmd.Parameters.AddWithValue("@RequestedDate", RequestedDate)
cmd.Parameters.AddWithValue("@Pharmacy", Pharmacy)
cmd.Parameters.AddWithValue("@PatientNumber", PatientNumber)

conn.Open()

cmd.ExecuteNonQuery()
conn.Close()

MsgBox("Your Prescription Has Been Requested!")

数据库类型有:

[PrescriptionNumber] INT          NOT NULL,
[Medication]         NVARCHAR(250) NULL,
[QntyandStrength]    NVARCHAR(250) NULL,
[RequestedDate]      NVARCHAR(70) NULL,
[Pharmacy]           VARCHAR (50) NULL,
[PatientNumber]      CHAR (10)    NULL,

关于如何改变这一点有什么建议吗?

【问题讨论】:

  • 为什么要将日期存储为字符串?
  • 同时使用.Add 而不是.AddWithValue
  • 您确定在这一行RequestedDate = Session("Date Requested")RequestedDate 有一个实际 值而不是Nothing
  • 我假设它来自我声明的变量,该变量将今天的日期分配给它
  • 它没有完全显示日期变量声明

标签: sql asp.net vb.net visual-studio


【解决方案1】:

正如 Chris Dunaway 所指出的,您对会话变量的引用不正确。

你声明变量并赋值:

Session("DateRequested") = (thisDay.ToString())

...但是您用不同的名称引用它...

RequestedDate = Session("Date Requested")  ''This variable name has a space.

所以,当你传递参数时...

cmd.Parameters.AddWithValue("@RequestedDate", RequestedDate)

...您正在传递对空对象的引用。没有会话(“请求的日期”)。

【讨论】:

  • 大家好,是的,我的傻眼弄错了,会话中有空间,它终于可以工作了,谢谢你的帮助!
猜你喜欢
  • 2012-08-16
  • 2021-09-29
  • 2016-08-03
  • 2012-06-09
相关资源
最近更新 更多