1

我有一个带有名为的表的 SQL Server 数据库,student它的列是:

  • 标准标识符
  • 用户名
  • 密码
  • 年龄
  • 地址

场景是用户已经登录并且他/她username保存在会话中,而他正在导航标签应该在标签中显示登录用户的年龄。

我不知道该怎么做,很多例子展示了如何在不使用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()
4

1 回答 1

2

我不确定这是否重要,但我通常在 Session 变量周围使用方括号。此外,您忘记使用撇号来关闭您的 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();
}

如果您正在寻找有关此的更多信息,请查看http://www.dotnetperls.com/sqlconnection

于 2013-07-03T23:27:38.863 回答