3

我正在尝试设置一个 asp:label,它每天显示来自 ms-access 数据库的一个值。

我设置了一个每天递增一次的变量“ID”,我尝试使用“ID”变量作为“sID”的行号从.mdb 调用“名称”值除周六和周日外,数据库和名称应每天更改。

当我在浏览器中运行该站点时,没有语法错误。但它什么也没显示。

我不确定我的查询或显示代码是否错误。

我在下面粘贴了我的 .vb 代码。在 .aspx 上我只有

    Public Class Mat
    Inherits System.Web.UI.Page

    Public Sub page_load()

        Dim ID As Long
        Dim sConString As String
        Dim sCon As SqlConnection
        Dim scmd As SqlCommand

        sCon = New SqlConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\sAuditor.mdb")
        scmd = New SqlCommand()

        ID = 1
        If DatePart("hh", Now()) = 12 And DatePart("mi", Now()) = 0 And DatePart("ss", Now()) = 0 Then

            If DatePart("w", Now()) <> 0 And DatePart("w", Now()) <> 1 Then

                If ID < 3 Then
                    ID = ID + 1
                Else
                    ID = 1
                End If

            End If

        End If

        scmd.CommandText = "SELECT Name FROM EssAudit WHERE sID=ID"
        scmd.Connection = sCon

        Try

            sCon.Open()
            Dim sReader As SqlDataReader
            sReader = scmd.ExecuteReader

            While sReader.Read
                slabel.Text = sReader.Item("Name")
            End While

            sReader.Close()

        Catch ex As Exception
        End Try

        sCon.Close()

    End Sub


End Class
4

1 回答 1

3

您没有传递 ID 的值,而是将字符串“ID”传递给 select 语句。试试这个:

    scmd.CommandText = "SELECT [Name] FROM EssAudit WHERE sID=@ID"
    scmd.Parameters.AddWithValue("@ID", ID)

我要补充一点,如果您在 catch 部分执行某些操作,错误消息可能会帮助您找到错误。简单地忽略错误很少是要走的路。

于 2012-11-13T14:50:21.167 回答