> Développement - ASP SOURCE : http://www.microsoft.com/france/

[ RETOUR ]


ASP > ACCES A UNE BDD

ActiveX Data Objects (ADO) correspond à une technologie à la fois simple et extensible permettant d'accéder à des bases de données par le biais de vos pages Web. Vous pouvez utiliser ADO pour écrire des scripts compacts et évolutifs permettant la connexion aux bases de données conformes à ODBC (Open Database Connectivity) et aux sources de données conformes à OLE DB. Si vous êtes un scripteur sans grande connaissance en matière de connectivité des bases de données, vous trouverez les instructions des commandes ADO simples et abordables. De même, si vous êtes un expert en programmation de bases de données vous apprécierez les fonctionnalités de connexion neutre de langage et de manipulation des requêtes.

Création d'un nom de source de données ODBC de type fichier

Avant de créer des scripts de bases de données, vous devez fournir un moyen à ADO de localiser, identifier et communiquer avec votre base de données. Les pilotes de bases de données – programmes transmettant les informations de votre application Web à une base de données – utilisent un nom de source de données (DSN, Data Source Name) pour localiser et identifier une base de données particulière, conforme à ODBC. En général, le nom de la source de données contient des informations sur la configuration des bases de données, la sécurité au niveau utilisateur et les emplacements. Le nom de la source de données peut avoir la forme d'une entrée dans le registre de Windows NT ou dans un fichier texte.

Avec ODBC vous pouvez choisir le type de DSN que vous souhaitez créer : Utilisateur, Système, ou Fichier. Les noms de DSN Utilisateur et Système se situent dans le registre de Windows NT. Le nom de DSN Système permet à tous les utilisateurs connectés à un serveur défini de se connecter à une base de données, alors que le nom de DSN Utilisateur limite la connectivité à la base de données à un utilisateur spécifique disposant des informations d'authentification nécessaires. Le DSN fichier, prenant la forme d'un fichier texte, fournit un accès à plusieurs utilisateurs et se transfère aisément d'un serveur à un autre par copie des fichiers DSN. C'est la raison pour laquelle, les exemples de cette rubrique utiliseront le nom de la source de données de type Fichier.

Vous pouvez créer un DSN fichier en allant dans le menu Démarrer de Windows puis en ouvrant le Panneau de configuration. Double-cliquez sur l'icône ODBC, puis sélectionnez la feuille de propriétés DSN fichier. Cliquez sur Ajouter, choisissez votre pilote de base de données, puis cliquez sur Suivant. Suivez les instructions précédentes pour configurer un nom de la source de données correspondant à votre base de données.

Configuration d'un DSN fichier de base de données Microsoft Access

  1. Dans la boîte de dialogue Créer une nouvelle source de données, sélectionnez Microsoft Access Driver dans la zone de liste, puis cliquez sur Suivant.
  2. Tapez un nom pour votre fichier DSN, puis cliquez sur Suivant
  3. Cliquez sur Terminer pour créer la source de données.
  4. Dans la boîte de dialogue Installation OBDC pour Microsoft Access 97, cliquez sur Sélectionner. Choisissez un fichier de base de données Microsoft Access (*.mdb), puis cliquez sur OK.

Remarque   Pour des raisons liées aux performances et à la fiabilité, il est fortement conseillé d'utiliser un moteur de bases de données client-serveur pour le déploiement d'applications Web dirigées vers les données et exigeant un accès caractérisé par une demande importante de la part de plus de 10 utilisateurs en même temps. Bien qu'Active Server Pages fonctionne avec n'importe quelle base de données compatible ODBC, il a fait l'objet de tests très complets et est conçu pour fonctionner avec des bases de données client-serveur telles que Microsoft ® SQL Server ™ ou Oracle.

ASP prend en charge les bases de données à fichiers partagés (Microsoft ® Access ou Microsoft ® FoxPro) comme sources de données valides. Bien que certains exemples de la documentation d'ASP utilisent une base de données à fichiers partagés, il est conseillé de n'utiliser ces types de moteurs de bases de données que dans le cadre de travaux de développement ou de scénarios de déploiement limité. Il arrive que les bases de données à fichiers partagés ne soient pas aussi adaptées que les bases de données client-serveur aux applications Web faisant l'objet de demandes importantes et exigeant une qualité de niveau production.

Configuration d'un DSN fichier de base de données SQL Server

Remarque   Si la base de données se trouve sur le serveur distant, contactez l'administrateur du serveur pour obtenir des informations de configuration supplémentaires ; la procédure suivante utilise les paramètres ODBC par défaut de SQL Server, lesquels ne conviendront peut-être pas pour votre configuration matérielle.

  1. Dans la boîte de dialogue Créer une nouvelle source de données, sélectionnez SQL Server dans la zone de liste, puis cliquez sur Suivant.
  2. Tapez un nom pour votre fichier DSN, puis cliquez sur Suivant.
  3. Cliquez sur Terminer pour créer la source de données.
  4. Tapez le nom du serveur exécutant SQL Server, votre identificateur de connexion et votre mot de passe.
  5. Dans la boîte de dialogue Créer une nouvelle source de données vers SQL Server, tapez le nom du serveur contenant la base de données SQL Server dans la zone de liste Serveur, puis cliquez sur Suivant.
  6. Sélectionnez une méthode d'authentification des informations d'enregistrement.
  7. Si vous choisissez l'authentification SQL Server, entrez un identificateur de connexion et un mot de passe, puis cliquez sur Suivant.
  8. Dans la boîte de dialogue Créer une nouvelle source de données vers SQL Server, définissez votre base de données par défaut, les paramètres de procédure stockés dans le pilote et les identificateurs ANSI, puis cliquez sur Suivant. (Pour plus d'informations, cliquez sur Aide.)
  9. Dans la boîte de dialogue (également appelée Créer une nouvelle source de données vers SQL Server), choisissez une méthode de traduction des caractères, puis cliquez sur Suivant. (Pour plus d'informations, cliquez sur Aide.)
  10. Dans la boîte de dialogue suivante (également appelée Créer une nouvelle source de données vers SQL Server), sélectionnez les options d'enregistrement.

    Remarque   En général, vous ne devez utiliser l'enregistrement que pour le débogage de problèmes d'accès à la base de données.

  11. Dans la boîte de dialogue Installation OBDC pour Microsoft SQL Server, cliquez sur Tester la source de données. Si le nom de la source de données a été créé correctement, la boîte de dialogue Résultats du test indiquera que la phase de test s'est correctement achevée.

    Informations relatives aux connexions à SQL Server et à la sécurité :
    Si vous développez une application ASP de base de données destinée à se connecter à une base de données distante SQL Server, vous devez prendre en considération les points suivants :

Configuration d'un DSN fichier de base de données Oracle

Vérifiez que le programme Oracle client est correctement installé sur l'ordinateur où vous comptez créer le nom de la source de données. Pour plus d'informations, consultez votre administrateur de serveur et la documentation du programme de base de données.

  1. Dans la boîte de dialogue Créer une nouvelle source de données, sélectionnez Microsoft ODBC pour Oracle dans la zone de liste, puis cliquez sur Suivant.
  2. Tapez un nom pour votre fichier DSN, puis cliquez sur Suivant.
  3. Cliquez sur Terminer pour créer la source de données.
  4. Entrez le nom d'utilisateur, le mot de passe et le nom du serveur, puis cliquez sur OK.

Remarque   Les fichiers DSN ont l'extension .dsn et se situent dans le répertoire \Program Files\Fichiers communs\ODBC\Data Sources.

Connexion à une base de données

Le tout premier pas vers l'accession aux informations d'une base de données consiste à établir une connexion avec la source de la base de données. ADO fournit l'objet Connection qui peut vous servir à établir et à gérer des connexions entre vos applications et les bases de données ODBC. L'objet Connection propose une variété de propriétés et de méthodes que vous pouvez utiliser pour ouvrir ou fermer des connexions aux bases de données et envoyer des requêtes pour mettre à jour des informations.

Pour établir une connexion à une base de données, vous devez d'abord créer une instance de l'objet Connection. Le script suivant, par exemple, permet de créer l'instance de l'objet Connection puis d'ouvrir une connexion :

<%
'Crée un objet connexion
Set cn = Server.CreateObject("ADODB.Connection")
'Ouvre une connexion ; la chaîne fait référence au nom
'de la source de données
cn.Open "FILEDSN=MyDatabase.dsn"
%>

Remarque   La chaîne du nom de la source de données ne contient pas d'espaces, que ce soit avant ou après le signe égal (=).

Dans le cas présent, la méthode Open de l'objet Connection fait référence au nom de source de données de type fichier contenant les informations d'emplacement et de configuration de la base de données. En option, vous pouvez faire référence, directement et explicitement, à un fournisseur, une source de données, un identifiant d'utilisateur et un mot de passe au lieu d'un nom de source de données.

Exécution de requête avec l'objet Connection

Grâce à la méthode Execute de l'objet Connection, vous pouvez envoyer des requêtes SQL à la source de données et en récupérer les résultats. SQL, langage standard en matière de communication avec les bases de données, dispose de commandes permettant de récupérer et de mettre à jour des informations.

Le script suivant utilise la méthode Execute de l'objet Connection pour envoyer une requête sous la forme de la commande SQL INSERT, qui permet d'insérer des données dans une table particulière de base de données. Dans ce cas précis, ce bloc de script permet d'insérer le nom Jose Lugo dans une table de base de données appelée Customers.

<%
'Définit le nom de la source de données de type fichier
strDSN = "FILEDSN=MyDatabase.dsn"

'Crée l'instance de l'objet Connection et ouvre une connexion
'à une base de données
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open strDSN

'Définit l'instruction SQL, SELECT
strSQL = "INSERT INTO Customers (FirstName, LastName)
VALUES ('Jose','Lugo')" 
'Utilise la méthode Execute pour envoyer une requête SQL
'à la base de données
cn.Execute(strSQL)
%>

Remarque   La chaîne du chemin correspondant au nom de la source de données de type fichier ne doit pas comprendre d'espaces avant ou après le signe égal (=.)

Outre la commande SQL INSERT, vous pouvez utiliser les commandes SQL UPDATE et DELETE pour modifier ou supprimer les informations d'une base de données.

Grâce à la commande SQL UPDATE vous pouvez modifier la valeur des éléments contenus dans la table d'une base de données. Le script suivant utilise la commande UPDATE afin de modifier les champs FirstName de la table Customers en François pour tous les champs LastName contenant le nom de famille Rhein.

<%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "FILEDSN=MyDatabase.dsn"
cn.Execute "UPDATE Customers SET FirstName = 'François'
WHERE LastName = 'Rhein' "
%>

Pour supprimer des enregistrements spécifiques dans une table de base de données, vous pouvez utiliser la commande SQL DELETE. Le script suivant supprime toutes les lignes de la table Customers, dont le nom de famille correspond à Rhein :

<%
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "FILEDSN=MyDatabase.dsn"
cn.Execute "DELETE FROM Customers WHERE LastName = 'Rhein'"
%>

Remarque   Vous devez utiliser la commande SQL DELETE avec prudence. L'utilisation de la commande DELETE sans instruction WHERE l'accompagnant, aura pour effet de supprimer toutes les lignes d'une table. N'oubliez pas d'ajouter l'instruction SQL WHERE, qui indique précisément les lignes à supprimer.

Utilisation de l'objet Recordset pour manipuler des résultats

Bien que l'objet Connection facilite grandement la tâche en permettant la connexion à une base de données et l'envoi d'une requête, l'objet Connection connaît certaines limites. Ainsi, vous ne pouvez créer de scripts avec l'objet Connection qui récupère et affiche des informations sur les données d'une base de données. Au lieu de cela, vous devez connaître exactement les modifications à apporter à la base de données et implémenter ces modifications par le biais d'une requête.

Pour récupérer des données, examiner des résultats et apporter des modifications à votre base de données, ADO fournit l'objet Recordset. Comme son nom l'indique, l'objet Recordset dispose de fonctions vous permettant, selon les contraintes de la requête, de récupérer et d'afficher un ensemble de lignes ou d'enregistrements provenant d'une base de données. L'objet Recordset conserve la position de chaque enregistrement renvoyé par une requête, vous permettant ainsi d'examiner les résultats, élément après élément.

Selon la façon dont vous configurez les propriétés de type curseur de l'objet Recordset, vous pouvez faire défiler et mettre à jour des enregistrements. Les curseurs de bases de données se comportent comme des pointeurs vous permettant de localiser un élément spécifique dans un ensemble d'enregistrements. Les curseurs sont particulièrement utiles pour récupérer et inspecter des données, ainsi que pour effectuer des opérations basées sur ces enregistrements. L'objet Recordset dispose de propriétés vous permettant de contrôler avec précision le comportement des curseurs, améliorant ainsi votre capacité à vérifier et à mettre à jour des résultats. Ainsi, vous pouvez utiliser les propriétés CursorType et CursorLocation pour configurer un type de curseur renvoyant un ensemble de résultats à votre application client (les résultats demeurant bien-entendu sur le serveur de base de données) et affichant les dernières modifications apportées à la base de données par les autres utilisateurs.

Récupération d'un ensemble d'enregistrements

Les bonnes applications de bases de données emploient à la fois l'objet Connection, pour l'établissement d'une connexion, et l'objet Recordset, pour la manipulation des données renvoyées. En « couplant » les fonctions spécialisées de ces deux objets, vous pouvez développer des applications de bases de données pouvant effectuer pratiquement toutes les tâches possibles de gestion de données. Ainsi, le script serveur suivant utilise l'objet Recordset pour exécuter la commande SQL SELECT. La commande SELECT récupère un ensemble spécifique d'informations en fonction des limitations de la requête. La requête contient également une instruction SQL WHERE, utilisée pour affiner la requête selon un critère particulier. Dans l'exemple suivant, l'instruction WHERE limite l'étendue de la requête à tous les enregistrements contenant le nom de famille Rhein dans la table Customers.

<%
'Établit une connexion avec la source de données 
strDSN = "FILEDSN=MyDatabase.dsn" 
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open strDSN

'Crée une instance de l'objet Recordset
Set rsCustomers = Server.CreateObject("ADODB.Recordset")

'Ouvre recordset à l'aide de la méthode Open
' et utilise la connexion établie par l'objet Connection
strSQL = "SELECT FirstName, LastName FROM Customers
WHERE LastName = 'Rhein' "
rsCustomers.Open strSQL, cn 

'Parcourt l'ensemble des enregistrements et affiche les résultats
'puis incrémente la position de l'enregistrement
'grâce à la méthode MoveNext
Set objFirstName = rsCustomers("FirstName") 
Set objLastName = rsCustomers("LastName") 
Do Until rsCustomers.EOF 
Response.Write objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
Loop
%>

Notez que dans l'exemple précédent, l'objet Connection a établi la connexion à la base de données et que l'objet Recordset a utilisé cette connexion pour récupérer les résultats provenant de la base de données. Cette méthode est avantageuse lorsque vous devez configurer avec précision la façon dont le lien est établi avec la base de données. Ainsi, si vous deviez spécifier le délai d'attente avant l'annulation d'une connexion, il vous faudrait utiliser l'objet Connection afin d'établir cette propriété. Cependant, si vous vouliez simplement établir une connexion en utilisant les propriétés de connexion par défaut de ADO, vous pourriez utiliser la méthode « Open » de l'objet Recordset afin d'établir le lien :

<%
strDSN = "FILEDSN=MyDatabase.dsn"
strSQL = "SELECT FirstName, LastName FROM Customers
WHERE LastName = 'Rhein' "
Set rsCustomers = Server.CreateObject("ADODB.Recordset")

'Ouvre une connexion à l'aide de la méthode Open
'et utilise la connexion établie par l'objet Connection
rsCustomers.Open strSQL, strDSN 

'Parcourt l'ensemble des enregistrements et affiche les résultats
'puis incrémente la position de l'enregistrement
'à l'aide de la méthode MoveNext
Set objFirstName = rsCustomers("FirstName") 
Set objLastName = rsCustomers("LastName") 
Do Until rsCustomers.EOF
Response.Write objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
Loop
%>

Lorsque vous établissez une connexion à l'aide de la méthode Open de l'objet Recordset, vous utilisez implicitement l'objet Connection pour permettre l'établissement du lien.

Amélioration des requêtes avec l'objet Command

Grâce à l'objet ADO Command, vous pouvez exécuter les requêtes de la même façon qu'avec les objets Connection et Recordset, sauf qu'avec l'objet Command vous pouvez préparer et compiler votre requête sur la source de la base de données puis la soumettre à plusieurs reprises sur différents ensembles de valeurs. Ce type de compilation des requêtes a l'avantage de réduire considérablement le temps nécessaire à l'application de modifications sur une requête existante. En outre, vos requêtes SQL peuvent rester partiellement indéfinies, car vous avez la possibilité de modifier certaines parties des requêtes, juste avant leur exécution.

La collection Parameters de l'objet Command vous évite le souci de devoir reconstruire votre requête chaque fois que vous voulez la soumettre à nouveau. Ainsi, si vous devez mettre régulièrement à jour des informations relatives aux dépenses et approvisionnements au sein de votre système d'inventaire mis sur Web, vous pouvez prédéfinir votre requête de la façon suivante :

<% 
'Ouvre une connexion à l'aide de l'objet Connection.
'L'objet Command ne dispose pas de méthode Open
'pour établir une connexion
strDSN = "FILEDSN=MyDatabase.dsn" 
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open strDSN

'Crée une instance de l'objet Command ;
'utilise la propriété ActiveConnection pour attacher 
'la connexion à l'objet Command
Set cm= Server.CreateObject("ADODB.Command")
Set cm.ActiveConnection = cn

'Définit la requête SQL
cm.CommandText = "INSERT INTO Inventory (Material, Quantity)
VALUES (?, ?)" 

'Enregistre une version préparée (ou pré-compilée)
'de la requête spécifiée dans la propriété CommandText
'avant la première exécution d'un objet Command. 
cm.Prepared = True

'Définit les informations de configuration
'sur les paramètres de la requête
cm.Parameters.Append cm.CreateParameter("material_type",200, ,255)
cm.Parameters.Append cm.CreateParameter("quantity",200, ,255)

'Définit et exécute Insert une première fois
cm("material_type") = "ampoules" 
cm("quantity") = "40" 
cm.Execute

'Définit et exécute Insert une seconde fois
cm("material_type") = "fusible" 
cm("quantity") = "600"
cm.Execute
%>

À la lumière de l'exemple précédent, vous pouvez remarquer que le script construit et soumet à plusieurs reprises une requête SQL ayant des valeurs différentes, sans qu'il soit nécessaire de redéfinir et de renvoyer la requête vers la source de la base de données. La compilation de vos requêtes à l'aide de l'objet Command vous permet également d'éviter les problèmes de concaténation de chaînes et de variables nécessaires à la formation de requêtes SQL. En l'occurrence, l'utilisation de la collection Parameter de l'objet Command, vous évite les problèmes liés à la définition de certains types de variables chaîne, date et heure. Les valeurs de requêtes SQL contenant des apostrophes, par exemple, (') peuvent faire échouer la requête :

strSQL = "INSERT INTO Customers (FirstName, LastName)
VALUES ('Vincent','D'Aulnay')" 

Notez que le nom de famille D'Aulnay contient une apostrophe qui entre en conflit avec les apostrophes utilisés pour démarquer les données du mot clé SQL VALUES. En liant la valeur de la requête sous forme de paramètre de l'objet Command, ce type de problème est évité.

Combinaison de formulaires HTML et d'accès aux bases de données

Les pages Web contenant des formulaires HTML peuvent permettre aux utilisateurs d'effectuer, à distance, des requêtes sur une base de données et d'en récupérer les informations adéquates. Grâce à ADO, vous pouvez créer des scripts d'une simplicité désarmante, dont le but est de recueillir, à partir du formulaire, les informations de l'utilisateur, créer une requête de base de données personnalisée et renvoyer les informations à l'utilisateur. À l'aide de l'objet ASP Request, vous pouvez récupérer des informations entrées dans un formulaire HTML et les incorporer à vos instructions SQL. Le bloc de script suivant, par exemple, insère des informations données par un formulaire HTML dans une table. Le script recueille les informations de l'utilisateur à l'aide de la collection Form de l'objet Request.

<%
'Ouvre une connexion à l'aide de l'objet Connection.
'L'objet Command ne dispose pas de méthode Open
'pour établir une connexion
strDSN = "FILEDSN=MyDatabase.dsn" 
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open strDSN

'Crée une instance de l'objet Command
'et utilise la propriété ActiveConnection pour attacher
'la connexion à l'objet Command
Set cm= Server.CreateObject("ADODB.Command")
Set cm.ActiveConnection = cn

'Définit la requête SQL
cm.CommandText = "INSERT INTO MySeedsTable (Type) VALUES (?)" 

'Définit les informations de configuration
'sur les paramètres de la requête
cm.Parameters.Append cm.CreateParameter("type",200, ,255 )

'Définit et exécute Insert
cm("type") = Request("SeedType") 
cm.Execute
%>

Gestion des connexions à la base de données

Un des obstacles principaux à la conception d'une application de base de données sophistiquée pour le Web, comme une application de services en ligne traitant les commandes de milliers de clients, est de bien gérer les connexions à la base de données. L'ouverture et la conservation des connexions à la base de données, même lorsqu'aucune information n'est transmise, peuvent sévèrement mettre à l'épreuve les ressources d'un serveur de bases de données et entraîner des problèmes de connectivité. Les applications de bases de données bien conçues sur le Web recyclent les connexions à la base de données et compensent les retards dus au trafic sur le réseau.

Définition du délai d'une connexion

Un serveur de base de données subissant une soudaine augmentation d'activités peut générer des retards d'exécution, augmentant du même coup le temps nécessaire à l'établissement d'une connexion à la base de données. Par conséquent, des délais de connexion excessifs sont susceptibles de réduire les performances de votre application de base de données.

Grâce à ConnectionTimeout de l'objet Connection, vous pouvez limiter le temps d'attente de l'application avant l'abandon de la tentative de connexion et l'envoi d'un message d'erreur. Le script suivant, par exemple, donne à la propriété ConnectionTimeout un délai de vingt secondes avant d'annuler la tentative de connexion :

Set cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 20
cn.Open "FILEDSN=MyDatabase.dsn"

La valeur par défaut de la propriété ConnectionTimeout est de 30 secondes.

Remarque   Avant d'incorporer la propriété ConnectionTimeout à vos applications de bases de données, vérifiez que votre fournisseur de connexion ainsi que la source de données gèrent cette propriété.

Mise en file d'attente des connexions

Les applications de bases de données pour le Web qui établissent et terminent fréquemment les connexions aux bases de données sont susceptibles de réduire les performances du serveur. ASP prend en charge un type de connexion efficace en utilisant la fonction de mise en file d'attente des connexions de ODBC 3.5. La file d'attente des connexions maintient ouvertes les connexions aux bases de données et gèrent le partage des connexions entre les différentes requêtes des utilisateurs, garantissant ainsi une stabilité des performances et la réduction du nombre de connexions inactives. À chaque demande de connexion, la file d'attente des connexions détermine d'abord s'il existe une connexion inactive en son sein. Si c'est le cas, la file d'attente des connexions renvoie cette connexion au lieu de créer une nouvelle connexion vers la base de données.

Si vous voulez que votre pilote ODBC participe à la file d'attente des connexions, vous devez configurer le pilote spécifique à la base de données puis définir la propriété CPTimeout du pilote dans le registre de Windows NT. Lorsque ODBC met fin à une connexion, celle-ci est enregistrée dans une file d'attente, au lieu d'être déconnectée. La propriété CPTimeout détermine la durée d'une connexion au sein de la file d'attente. Si la durée de la connexion dans la file d'attente se prolonge au-delà de la durée définie par CPTimeout, la connexion est fermée et retirée de la file d'attente. La valeur par défaut de CPTimeout est de 60 secondes.

Vous pouvez définir à votre guise la propriété CPTimeout afin d'activer la mise en file d'attente des connexions pour un pilote de base de données ODBC spécifique. Pour cela, vous devez créer une clé de registre ayant les paramètres suivants :


\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\
driver-name\CPTimeout = timeout 

(REG_SZ, les unités sont en secondes)

La clé suivante, par exemple, définit le délai d'expiration de la file d'attente des connexions à 180 secondes (3 minutes) pour le pilote SQL Server.

\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\
SQL Server\CPTimeout = 180

Remarque   Par défaut, votre serveur Web active la mise en file d'attente des connexions pour SQL Server en définissant CPTimeout à 60 secondes.

Utilisation de connexions à travers plusieurs pages

Bien que vous puissiez réutiliser une connexion à travers plusieurs pages en la stockant dans l'objet Application d'ASP, cela maintiendrait une collection ouverte inutilement, mettant fin ainsi aux avantages de la mise en file d'attente des connexions. Si de nombreux utilisateurs doivent se connecter à la même application de base de données ASP, une approche plus judicieuse consiste à réutiliser une chaîne de connexion à la base de données tout au long de plusieurs pages Web, en plaçant cette chaîne dans l'objet Application d'ASP. Ainsi, vous pouvez spécifier une chaîne de connexion dans la procédure d'événement Application_OnStart du fichier Global.asa, comme le montre le script suivant :


Application.lock

Application("ConnectionString") = "FILEDSN=MyDatabase.dsn"
Application.unlock

Alors, dans chaque fichier ASP accédant à la base de données, vous pouvez écrire :

<OBJECT RUNAT=Server ID=cn PROGID="ADODB.Connection"> </OBJECT>

afin de créer une instance de l'objet Connection pour la page et utiliser le script :

cn.Open Application("ConnectionString")

pour ouvrir la connexion. À la fin de la page, vous fermez la connexion grâce à :

cn.Close

Si un utilisateur isolé à besoin de réutiliser une connexion tout au long de multiples pages Web, il vous semblera peut-être plus avantageux d'utiliser l'objet Session plutôt que l'objet Application pour y stocker la chaîne de connexion.

Fermeture des connexions

Pour utiliser au mieux la mise en file d'attente des connexions, fermez explicitement les connexions à la base de données dès que possible. Par défaut, une connexion se termine après la fin de l'exécution de votre script. Cependant, en fermant explicitement une connexion dans votre script lorsqu'elle n'est plus nécessaire, vous réduisez la demande sur le serveur de base de données et rendez une connexion disponible aux autres utilisateurs.

Vous pouvez utiliser la méthode Close de l'objet Connection pour clore explicitement une connexion entre l'objet Connection et la base de données. Le script suivant ouvre puis ferme une connexion :

<% strDSN = "FILEDSN=MyDatabase.dsn"
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open 
cn.Close
%>

[ RETOUR ]