C# 如何使用会话将特定列数据显示到数据库中的标签?

C# 如何使用会话将特定列数据显示到数据库中的标签?,c#,asp.net,sql,sql-server,vb.net,C#,Asp.net,Sql,Sql Server,Vb.net,我有一个SQL Server数据库,其中有一个名为student的表,其列为: 标准标识 用户名 密码 年龄 地址 这种情况是,用户已经登录,并且他/她的用户名保存在会话中,当他导航标签时,标签中应显示登录用户的年龄 我不知道如何做到这一点,许多示例显示了如何在不使用WHERE子句或不使用会话的情况下将数据从数据库放到标签上 这是我使用的代码,它在应该显示年龄的页面上不起作用 Dim con As String = ConfigurationManager.ConnectionStr

我有一个SQL Server数据库,其中有一个名为
student
的表,其列为:

  • 标准标识
  • 用户名
  • 密码
  • 年龄
  • 地址
这种情况是,用户已经登录,并且他/她的
用户名
保存在会话中,当他导航标签时,标签中应显示登录用户的年龄

我不知道如何做到这一点,许多示例显示了如何在不使用
WHERE
子句或不使用会话的情况下将数据从数据库放到标签上

这是我使用的代码,它在应该显示年龄的页面上不起作用

    Dim con As String = ConfigurationManager.ConnectionStrings("con").ConnectionString
    Dim mycon As New SqlConnection(con)
    Dim agequery As String

    mycon.Open()

    agequery = "select age from student where username='" + Session("user")
    Dim com As New SqlCommand(agequery, mycon)
    lbl_agecurrent.Text = CStr(com.ExecuteScalar)

    mycon.Close()

我不确定这是否重要,但我通常在会话变量周围使用方括号。此外,您忘记了在agequery语句结束时使用撇号。因此,当执行SQL语句时,它找不到匹配的用户名,因此会向标签返回空值,这意味着不会向用户显示任何内容

如果我正确理解您的规格,我会写如下

string ageQuery = "SELECT age FROM student WHERE username='" + Session["user"] + "'"
string connString = ConfigurationManager.ConnectionStrings("con").ConnectionString;

using (SqlConnection sqlConnection = new SqlConnection(connString))
using (SqlCommand sqlCommand = new SqlCommand(ageQuery, sqlConnection))
{
    sqlConnection.Open();
    lbl_agecurrent.Text = (com.ExecuteScalar).ToString();
}

如果您想了解更多信息,请查看一个小问题,为什么数据库存储的是此人的年龄而不是出生日期?最好的方法是在登录时提取登录用户的数据,同时获取该用户的年龄,并在会话中分配,每次你都不需要为年龄调用db。请注意,如果用户名是用户可以控制的用户名,那么这里的查询容易受到SQL注入攻击。具体的和相关的,这一个:@Adrianwrag哈哈,触摸。我喜欢xkcd。正因为如此——当然,也因为有了一个有用的答案——请投赞成票!