在gusetbook.asp页面
<ItemTemplate>
<!--将"../Document/News.aspx"改成你的窗体-->
<a href='<%#  "Read.aspx?ID="+DataBinder.Eval(Container.DataItem,"gId") %>' Target="_Blank">
<%# DataBinder.Eval(Container.DataItem,"gTitle") %>
</a>
</ItemTemplate>
在read.aspx页面    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        If Page.IsPostBack = True Then
            Dim sId As String
            sId = Convert.ToInt32(Request.Params("gId").ToString())
            DispNews(sId)        End If
    End Sub
    Function DispNews(ByVal sId As String)
        Dim sCmd As String
        Dim cn As SqlConnection
        cn = New SqlConnection
        cn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings("dsn")
        cn.Open()
        Dim sqlCmd As SqlCommand
        sCmd = "select * from GuestBookTab where gid=@sId"
        Dim myReader As SqlDataReader
        sqlCmd = New SqlCommand(sCmd, cn)
        myReader = sqlCmd.ExecuteReader
        Dim myGid As String
        myGid = Convert.ToString(myReader.Item("gId"))
        Dim myGtitle As String
        myGtitle = Convert.ToString(myReader.Item("gTitle"))
        Dim myGtime As DateTime
        myGtime = Convert.ToDateTime(myReader.Item("gTime"))
        Dim myGdemo As String
        myGdemo = Convert.ToString(myReader.Item("gDemo"))
        Dim myUserId As String
        myUserId = Convert.ToString(myReader.Item("UserId"))
        Dim myGviewNumber As Integer
        myGviewNumber = Convert.ToString(myReader.Item("gViewNumber"))
        myGviewNumber = myGviewNumber + 1
        lblId.Text = myGid
        lblTitle.Text = myGtitle
        lblUserId.Text = myUserId
        lblTime.Text = myGtime
        lblViewNumber.Text = myGviewNumber
        lbldemo.Text = myGdemo            End Function
------------------------------------------------------------------------------------------
问题是:可以读取到传递过来的sid,但是无法通过函数读取数据,请问高手问题出在那里?

解决方案 »

  1.   

    要先把myReader做一下:
    myReader.Reader()
    当然了,最后也别忘了
    myReader.Close()
      

  2.   

    sCmd = "select * from GuestBookTab where gid=@sId"改成
    sCmd = "select * from GuestBookTab where gid=" & sId
      

  3.   

    数据类型不一致呀,你开始得到的是int型的,可方法里的参数是string的
      

  4.   


    Dim myReader As SqlDataReader
            sqlCmd = New SqlCommand(sCmd, cn)
            myReader = sqlCmd.ExecuteReader
            Dim myGid As String
            myGid = Convert.ToString(myReader.Item("gId"))
    --->>>
       myReader = sqlCmd.ExecuteReader  myReader.Reader()
      

  5.   

    一、没有给SQL语句中的@sID参数赋值;
    二、SqlDataReader的话必须先用Read()方法读取数据,否则记录指针还在第一条记录之前,是无法读取数据的。