【发布时间】:2015-04-11 01:07:52
【问题描述】:
所以我有一个显示用户用户名的标签。我已使用此值返回他们的 ID,然后将其附加到标签上。我使用执行标量来执行此操作,因为我不确定如何在标签上获取单个值。
这很好用。然后我使用标签中的 ID 并将其放在另一个表中。我可以这样做两次,然后页面崩溃说...
“子查询返回超过 1 个值。当子查询跟在 =、!=、、>= 之后或当子查询用作表达式时,这是不允许的。”
但是我不明白。我没有从页面上的第二个表格中提取任何内容。不知道为什么会影响。我觉得我什么都试过了。取出将 ID 发布到标签的行可以让页面运行,但我需要它。
Label2.Text = User.Identity.Name
Dim connetionString As String
Dim cnn As SqlConnection
Dim cmd As SqlCommand
Dim sql As String
connetionString = "Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\FYPMS_DB.mdf;Integrated Security=True"
sql = "SELECT SupID FROM Supervisor WHERE (Email = @Email)"
cnn = New SqlConnection(connetionString)
Try
cnn.Open()
cmd = New SqlCommand(sql, cnn)
cmd.Parameters.Add(New SqlParameter("@Email", User.Identity.Name))
Dim supid1 As Int32 = Convert.ToInt32(cmd.ExecuteScalar())
cmd.Dispose()
cnn.Close()
Label1.Text = supid1.ToString
Catch ex As Exception
MsgBox("Can not open connection ! ")
End Try
End Sub
【问题讨论】:
-
Email字段是否唯一? -
@Mephy 是的,我已经检查了很多次了。
-
第二次执行中是否存在User.Identity.Name?
-
@Angus chung 我不确定这意味着什么。这是在页面加载事件中
-
"我可以这样做两次",User.Identity.Name 还是一样的吗?
标签: asp.net vb.net label executescalar