Hur gör man en connection pool med connections som delas. Jag har uppfattadet som att ADO automatisk har en connection pool. Du använder dig av denna genom att öppna din anslutning med en identisk connectionstring.  Jag har uppfattadet som att ADO automatisk har en connection pool. Du använder dig av denna genom att öppna din anslutning med en identisk connectionstring. Connection pool
    
    
(någon som har ett exempel)
Då man vill ha databasinformation till sin hemsida.
Har hört att detta skall vara det bästa om man vill klara flera samtidiga besökare!Sv: Connection pool
    
    
Hur connection pool i ado fungerar kan kort beskrivas som följande:
 * Du öppnar en connection
    + ADO kontrollerar om det finns en connection i connection pool'en med identisk connectionstring
      Om det finns det:
         Hämtas denna från connection pool'en och tas sammtidigt bort från connection pool'en
      Om inte:
         Skapas en ny connection
(* Du gör databas anrop genom din connection)
 * Du stänger din anslutning genom ADO
    + Din anslutning stängs inte internt i ADO utan läggs i connection pool'en där den frigörs efter en viss angiven tid
Det är därför viktigt att du använder dig av ett connection objekt när du arbetar mot ADO objekt. T.ex. Recordset:
<code>
Dim rs1
Dim rs2
Dim con
Dim strConnectionString
    strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                          "Data Source=" & Server.MapPath("Medlem.mdb") & ";" & _
                          "Persist Security Info=False"
    Set con = CreateObject("ADODB.Connection")
    con.Open strConnectionString
    Set rs1 = con.Execute("SELECT tblOrders.* FROM tblOrders")
    Set rs2 = CreateObject("ADODB.Recordset")
    Do Until rs1.EOF
        'Write order row
        rs2.Open "SELECT tblOrderItems.* FROM tblOrderItems WHERE tblOrderItems.OrderItemOrder = " & rs1("OrderId"), con
        Do Until rs2.EOF
            'Write orderitem row
            rs2.MoveNext
        Loop
        rs2.Close
        rs1.MoveNext
    Loop
    Set rs2 = Nothing
    rs1.Close
    Set rs1= Nothing
    con.Close
    Set con = Nothing
</code>
INTE gör på följande sätt:
<code>
Dim rs1
Dim rs2
Dim strConnectionString
    strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                          "Data Source=" & Server.MapPath("Medlem.mdb") & ";" & _
                          "Persist Security Info=False"
    Set rs1 = CreateObject("ADODB.Recordset")
    rs1.Open "SELECT tblOrders.* FROM tblOrders", strConnectionString
    Set rs2 = CreateObject("ADODB.Recordset")
    Do Until rs1.EOF
        'Write order row
        rs2.Open "SELECT tblOrderItems.* FROM tblOrderItems WHERE tblOrderItems.OrderItemOrder = " & rs1("OrderId"), strConnectionString
        Do Until rs2.EOF
            'Write orderitem row
            rs2.MoveNext
        Loop
        rs2.Close
        rs1.MoveNext
    Loop
    Set rs2 = Nothing
    rs1.Close
    Set rs1= Nothing
</code>
Koden kan se ut att fungera likadant. men vad som sker är att recordseten internt skapar ett connection objekt av värdet från connectionstring. Sidan använder alltså två anslutningar istället för en. Om det är en asp sidan som kommer 10 samtida anrop öppna 20 anslutningar. Vilket är onödigt slöseri med resurser.Sv: Connection pool
    
    
Hur connection pool i ado fungerar kan kort beskrivas som följande:
 * Du öppnar en connection
    + ADO kontrollerar om det finns en connection i connection pool'en med identisk connectionstring
      Om det finns det:
         Hämtas denna från connection pool'en och tas sammtidigt bort från connection pool'en
      Om inte:
         Skapas en ny connection
(* Du gör databas anrop genom din connection)
 * Du stänger din anslutning genom ADO
    + Din anslutning stängs inte internt i ADO utan läggs i connection pool'en där den frigörs efter en viss angiven tid
Det är därför viktigt att du använder dig av ett connection objekt när du arbetar mot ADO objekt. T.ex. Recordset:
<code>
Dim rs1
Dim rs2
Dim con
Dim strConnectionString
    strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                          "Data Source=" & Server.MapPath("Medlem.mdb") & ";" & _
                          "Persist Security Info=False"
    Set con = CreateObject("ADODB.Connection")
    con.Open strConnectionString
    Set rs1 = con.Execute("SELECT tblOrders.* FROM tblOrders")
    Set rs2 = CreateObject("ADODB.Recordset")
    Do Until rs1.EOF
        'Write order row
        rs2.Open "SELECT tblOrderItems.* FROM tblOrderItems WHERE tblOrderItems.OrderItemOrder = " & rs1("OrderId"), con
        Do Until rs2.EOF
            'Write orderitem row
            rs2.MoveNext
        Loop
        rs2.Close
        rs1.MoveNext
    Loop
    Set rs2 = Nothing
    rs1.Close
    Set rs1= Nothing
    con.Close
    Set con = Nothing
</code>
INTE gör på följande sätt:
<code>
Dim rs1
Dim rs2
Dim strConnectionString
    strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                          "Data Source=" & Server.MapPath("Medlem.mdb") & ";" & _
                          "Persist Security Info=False"
    Set rs1 = CreateObject("ADODB.Recordset")
    rs1.Open "SELECT tblOrders.* FROM tblOrders", strConnectionString
    Set rs2 = CreateObject("ADODB.Recordset")
    Do Until rs1.EOF
        'Write order row
        rs2.Open "SELECT tblOrderItems.* FROM tblOrderItems WHERE tblOrderItems.OrderItemOrder = " & rs1("OrderId"), strConnectionString
        Do Until rs2.EOF
            'Write orderitem row
            rs2.MoveNext
        Loop
        rs2.Close
        rs1.MoveNext
    Loop
    Set rs2 = Nothing
    rs1.Close
    Set rs1= Nothing
</code>
Koden kan se ut att fungera likadant. men vad som sker är att recordseten internt skapar ett connection objekt av värdet från connectionstring. Sidan använder alltså två anslutningar istället för en. Om det är en asp sidan som kommer 10 samtida anrop öppna 20 anslutningar. Vilket är onödigt slöseri med resurser.