还是那个错误.
再就是.Add("@id", SqlDbType.VarChar, 20).Value = Session("onlineid")其实应该是
.Add("@id", SqlDbType.INT).Value = Session("onlineid")
调试的时候改了忘改回来了

解决方案 »

  1.   

    sqlcomm.CommandText = "exec_online"sqlcomm.Parameters.Refresh
    sqlcomm.Parameters("@id") = Session("onlineid")
    sqlcomm.Parameters("@name") = Session("name")
    sqlcomm.Parameters("@ip") = ip
    sqlcomm.Parameters("@ip1") = ip1
    sqlcomm.Parameters("@where")= where
    sqlcomm.Parameters("@url") = url
    sqlcomm.Parameters("@ie")= os(1)
    sqlcomm.Parameters("@os") = os(2)
    sqlcomm.Parameters("@ys") = Session("ys")        sqlcomm.Parameters("@onlineid").Direction = ParameterDirection.Output
            sqlcomm.ExecuteNonQuery()
            Session("onlineid") = sqlcomm.Parameters("@onlineid").Value
      

  2.   

    好像不对啊,提示refresh不是什么的成员.
      

  3.   

    sqlcomm 是command对象吧? 如果是,那应该没有错
      

  4.   

    是command对象,我用的是VS.NET来编辑的,提示我没有这个refresh成员.
    另外就是我一开始没有这个@onlineid,是因为我发现@id没有传值才加了这个@onlineid的,一开始@id设的是output,除了他的值没有传过去外,其它的值都传送成功了,因为@id传送不成功,所以每次都执行数据插入,我看到数据库里其它的值都对.
      

  5.   

    哦,那就不会了,我那个是asp的写法,不能用于.net
      

  6.   

    判断一下Session("onlineid")是不是空sqlcomm.Parameters("@id") = IIF(Session("onlineid") is nothing,0,Session("onlineid"))
      

  7.   

    我把session("onlineid")传给存储过程的@id,是INT型,然后在存储过程中判断@id是否为空的.
      

  8.   

    是不是存储过程里面变量设置为OUTPUT后就不接收程序传来的值了?我调试了一下好像是这样.