set con=server.createobject("ADODB.Connection")
dns="Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=;Password=;Data Source="
con.Open "ETSD","user","password" 
sql=""
SET rs=con.Execute(sql)
'-------------------------------------------------
dim con,rs,driver_name  
driver_name="Provider=MSDAORA.1;Password=;User ID=;Data Source=;Persist Security Info=True"  
set con = server.CreateObject("adodb.connection")  
con.open driver_name  
set rs=server.CreateObject("adodb.recordset")

解决方案 »

  1.   

    分页跟你的连接方法没问题
    是你的asp文件没弄好
      

  2.   

    分页程序是自己写的,跟怎么连数据库没有关系
    你看一下你写的程序是否有问题你是不是没有写
    rs.Close
    set rs = nothing
      

  3.   

    asp么,总是用ado了。至于用oledb provider和odbc,我认为问题都不大。ado本身就有connection pool,如果是odbc,ado用的就是odbc 3.5提供的pool功能。关键要考虑及时的释放connection资源,这样,可以提供connection的利用率。
    所以,recordset的cursorlocation要设置成aduserclient(客户端)。这样大量的查询(readonly recordset)就可以先释放连接,再去记录集的数据。
    那么,代码一般来说是这样的。
    set con=server.createobject("ADODB.Connection")
    conn.open ....
    set rs=server.CreateObject("adodb.recordset")
    rs.cursorlocation=aduserclient(自己定义的常量,最好查一下aduserclient的具体数值)
    rs.open "select ...",conn,adOpenStatic, adLockReadOnly
    set rs.activeconnection=nothing
    conn.close
    set conn=nothingdo while not rs.eof
      .....
      rs.movenext
    loop
      

  4.   

    1、Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=timecard;Data Source=bosweb;Extended Properties=""2、Provider=MSDAORA;Password=timecard;User ID=timecard;Data Source=bosweb3、dsn=bosweb;uid=zdwy;pwd=zdwy4、"Driver={Oracle ODBC Driver};" & _
               "Dbq=myDBName;" & _
               "Uid=myUsername;" & _
               "Pwd=myPassword"odbc连接需要设置以下参数:
    set rs1 = Server.CreateObject("ADODB.Recordset")
    rs1.ActiveConnection = MM_conn_STRING
    rs1.Source = "SELECT DEPARTMENT, DEPARTMENTNO, EXPERTNAME, EXPERTNO, IMAGE, SYNOPSIS, TYPENUM, ZC, SPECNAME, SPECNO  FROM ZDWY.EXPERT_VIEW1  WHERE TYPENUM = '1' AND SPECNO='" + Replace(v_specno, "'", "''") + "'"
    rs1.CursorType =2
    rs1.CursorLocation = 3
    rs1.LockType = 3
    rs1.Open()
    这两句属性设置好才能分页
    rs1.CursorType =2
    rs1.CursorLocation = 3
      

  5.   

    我同意这种观点,你好好查查程序。
    分页程序是自己写的,跟怎么连数据库没有关系
    你看一下你写的程序是否有问题你是不是没有写
    rs.Close
    set rs = nothing
      

  6.   

    我说了!分页一点问题也没有!数据库100000多条信息!我用的是自己写的函数!很好用!在WIN2000下在,racle是对释放的要求很严格的! 要不然很容易IIS卡死!当然关于释放的问题我也不说了,其实我一直都很注意的!程序方面应该是没有问题的!
    使用下面两个连接1。-- 0040
    <%
    Set OraSession=server.CreateObject("OracleInProcServer.XOraSession") 
    Set OraDatabase=OraSession.OpenDatabase("O1234","5000/5000",Cint(0)) 
    %>2。-- OLE DB
    <%
     set conn=server.createobject("ADODB.CONNECTION")
    connstr="Provider=OraOLEDB.Oracle;Persist security INFO=False;User 
    %>就可以读出CLOB这样的数据类型的全部内容!但是!dllhost.exe的进程,刷新一次就长一次!直到IIS崩溃,内存有释放)我说了!释放没有问题!同样的程序在--- ODBC的连接下用就释放!dllhost.exe的进程,长很慢!刷新一次,后就有释放!
    ======================================--- ODBC
       set conn=server.createobject("ADODB.CONNECTION")
      connstr="Data Source=XXX;User ID=XXX;password=XXX;"无法完全读出CLOB这样的数据类型的全部内容!我统计了一下就大约3000个字符!为了解决问题我使用循环方法:
    =======================================================================
    1.方法<!--#include file="inc/conn.asp"-->
    <%
    sql="SELECT XXX FROM XXXXX"
    Set rs =conn.execute(sql)size =32765i=0Do 
            text=rs.Fields("XXXXX").GetChunk(size) 
            Response.binarywrite text 
             text_size=Lenb(text) 
             i=i+1 
             
        Loop until text_size<size       
      rs.close
      set rs=nothing
      conn.close
     set conn=nothing
    %>结果:Response.binarywrite text 
    输出的内容有乱码!而且不全!!
    Response.ywrite text 
    输出的内容没有乱码!但是不全!!2方法
    <!--#include file="inc/conn.asp"-->
    <%
    sql="SELECT XXX FROM XXXXX"
    Set rs =conn.execute(sql)Size=65280
    I=0DoText=Rs.Fields("XXX").DbGetChunk(I*Size,Size)Response.write Text
    Text_Size=Lenb(Text)I=I+1Loop until Text_Size<Size  rs.close
      set rs=nothing
      conn.close
     set conn=nothing
    %>结果:Response. write text 
    输出的内容为空各位请帮帮看看?
      

  7.   

    该断都断了!释放没有问题!同一个程序页面!如AAAA。ASP 使用两种连接是不同的
    1,-- OLE DB  2,--- ODBC得出的结果是1,-- OLE DB 可以读出CLOB这样的数据类型的(全部内容)!但是!dllhost.exe的进程,刷新一次就长一次!直到IIS崩溃,内存没有释放!主要是长的很快!一次大约长1500KB的内存!2,--- ODBC 连接下以读出CLOB这样的数据类型的(部分内容)用就释放!dllhost.exe的进程,长很慢!刷新一次,后就有释放(一点)!
      

  8.   

    to  enhydraboy(乱舞的浮尘) ”关键要考虑及时的释放connection资源,这样,可以提供connection的利用率。
    所以,recordset的cursorlocation要设置成aduserclient(客户端)。这样大量的查询(readonly recordset)就可以先释放连接,再去记录集的数据。“说的不是太明白!尤其是"recordset的cursorlocation要设置成aduserclient(客户端)??"。不明白,我去去试是看看!
      

  9.   

    楼主做了没有:
    这两句属性设置好才能分页
    rs1.CursorType =2
    rs1.CursorLocation = 3
    用odbc连接,这两个属性至关重,否则分面数永远是-1
      

  10.   

    //---- CursorTypeEnum Values ----
    var adOpenForwardOnly = 0;
    var adOpenKeyset = 1;
    var adOpenDynamic = 2;
    var adOpenStatic = 3;//---- CursorLocationEnum Values ----
    var adUseServer = 2;
    var adUseClient = 3;
      

  11.   

    //---- LockTypeEnum Values ----
    var adLockReadOnly = 1;
    var adLockPessimistic = 2;
    var adLockOptimistic = 3;
      

  12.   

    我建议用ADO连接
    ConnectString="provider=msdnora;user id=uid;password=pwd;data source=service"
    注意user id 不能写成Uid
    password不能写成pwd;
    service为数据库服务名
    分页时
    要先建立记录集对象
    var rs = Server.CreateObject("ADODB.Recordset");
    rs为分页是用到的记录集对象
    rs.CursorType = 2;
    rs.CursorLocation = 3;
    用完rs要关闭
    rs.close();
    最后需要关闭连接对象
    conn.close();
      

  13.   

    不好意思错了
    应是provider=msdaora
      

  14.   

    to haiznan(风林火山) 
    关于ado的connection pool问题,你可以去查一下,microsoft的文档,ado会自动pool连接。但是,你编程的时候,要能够充分利用这个feature。
    对于只读的查询,大部分的人是这么写的:
    cn.open ....
    rs.open sql_str,cn,...
    do while not rs.eof
    ....
    rs.movenext
    loop
    rs.close
    cn.close看起来,也没什么问题,但是此时,这个连接是被这个asp的session独占的,因此,这样的asp代码没有充分利用到ado的connection pool特性。
    应该,比较好的写法应该是
    cn.open ....
    rs.cursorlocation=aduserclient  '使用客户端游标
    rs.open sql_str,cn,...
    set rs.activeconnection=nothing   '把记录集和连接的关系断开
    cn.close                         '马上就可以释放连接
    do while not rs.eof
    ....
    rs.movenext
    loop
    rs.closehaiznan(风林火山) ,你比较喜欢武田信玄吧,呵呵,我也很喜欢这个日本战国时代的名将。
    有空,我们交流交流。
      

  15.   

    有收获!我去看看!。。希望可以解决!在这里我先谢谢beckhambobo(beckham) 斑主!!也谢谢个位高手enhydraboy(乱舞的浮尘)。等等!因为你有你们的存在!就是我学习的动力!永远向你们看齐!再次感谢!等到结帖的时刻高分先送!谢!
      

  16.   

    beckhambobo(beckham) 斑主!!enhydraboy(乱舞的浮尘)。等等我是用oledb provide连接的,以确保OLE DB连接这种连,去读去数据并显示来时!可以显示所有的CLOB大约有存10000多字汉字!的全部内容!conn.asp文件:
    <%
       on error resume next
       
       set conn=server.createobject("ADODB.CONNECTION")
     connstr="Provider=OraOLEDB.Oracle.1;User ID=dbusers;password=007;Data Source=ready;"
      'connstr="Provider=msdaora;Data Source=aaa;User Id=aaa;Password=aaa;" 
       if err then 
          err.clear
       else
            conn.open connstr 
            if err then 
               err.clear
            end if
       end if
    %>程序:<!--#include file="../conn/conn.asp"--><%
       set rs=Server.CreateObject("adodb.Recordset")     sql="select id,a_id,a_main,a_user,a_time,a_content,a_image,a_image_show from b_revert where a_main='"& id &"' and a_pub=1 order by id asc " 
      rs.open sql , conn , 3 ,1 if rs.eof or rs.bof then
         response.write "没有信息!"
       else   
    do while not rs.eof
    %>
    <TABLE cellSpacing=0 width="100%" align=center border=0>
      <TBODY>
        <TR> 
          <TD align=right width=100></TD>
          <TD align=middle><FONT color=green size=-1>作者:</FONT><a 
          href="info.asp?a_user=<%=rs("a_user")%>" target="_blank"><FONT color=blue size=-1><%=rs("a_user")%></FONT></a><FONT color=green size=-1>&nbsp;提交日期:<%=rs("a_time")%></FONT></TD>
          <TD align=right width=100></TD>
        </TR>
      </TBODY>
    </TABLE>
    <div class=content>
    <br>
    <%=rs("a_content")%>
     <br>
      <br>
    </div>
    <%    rs.movenext
       loop
    end ifrs.close
    set rs=nothing 
    conn.close
    set conn=nothing
    %> 用下面的方法好象不行输出为空值!该怎么写呢!..help............?
    ====================
    set con=server.createobject("ADODB.Connection")
    conn.open ....
    set rs=server.CreateObject("adodb.recordset")
    rs.cursorlocation=aduserclient(自己定义的常量,最好查一下aduserclient的具体数值)
    rs.open "select ...",conn,adOpenStatic, adLockReadOnly
    set rs.activeconnection=nothing
    conn.close
    set conn=nothingdo while not rs.eof
      .....
      rs.movenext
    loop
      

  17.   

    set con=server.createobject("ADODB.Connection")
    conn.open "Provider=MSDAORA.1;Password=007;User ID=dbusers;Data Source=ready;Persist Security Info=True"  
    set rs=server.CreateObject("adodb.recordset")
    rs.cursorlocation=3
    rs.open "select ...",conn,2,3
    set rs.activeconnection=nothing
    conn.close
    set conn=nothingdo while not rs.eof
      .....
      rs.movenext
    loop
      

  18.   

    和打开数据库连接使用的游标库有关..
    通常使用客户端游标才支持ado的recordcount(等一系列)属性,关于该问题你可以参考关于不同提供者实现ado属性的说明,mdac联机文档中就有
      

  19.   

    我一般用microsoft ado for oracle
    如下:conn.open "provider=msdaora.1;data source=;user id=xxxx;password=xxxx"
    如果是大量数据用oracle的orasession
    不论哪种方法,服务器都没有宕过
      

  20.   

    在这里再顶顶!再次感谢!等到结帖的时刻高分先送!谢!
    先谢谢beckhambobo(beckham) 斑主!!也谢谢个位高手enhydraboy(乱舞的浮尘)。等等!