Connecter une base avec un DSN
Connecter une base sans DSN
Application
Formatage des chaînes de caractère pour SQL
Première Requête SQL : Sélection
Deuxième Requête SQL : Ajout, Mise à jour et Effacement
Un conseil pour finir
Connecter une base avec un DSN
Connecter une base de données dans le DSN (Data Source Name) de votre serveur ou du serveur distant est une opération qui permet de ne pas faire référence à la position de la base dans vos pages, mais uniquement au nom virtuel que vous aurez défini pour cette base.
Pour cela rendez-vous dans Panneau de configuration, Section ODBC 32
bits, puis cliquez sur l'onglet DSN système. Cliquez ensuite sur le bouton ajouter, puis sur Microsoft Access Driver (*.mdb), puis Terminer.
Dans la Zone, Nom de la source de Données inscrivez Nom_de_Votre_Base_Virtuel, puis par l'intermédiaire du bouton sélectionner, sélectionnez votre base sur le disque dur.
Côté Asp, la référence ce fera désormais à Nom_de_Votre_Base_Virtuel et non plus au fichier lui-même.
Exemple avec une base Access :
<%
Set rst = Server.CreateObject("ADODB.Connection")
rst.open "Nom_de_Votre_Base_Virtuel","",""
%>
Connecter une base sans DSN
Il est souvent plus simple de ne pas déclarer la base de donnée dans le DSN du serveur. On peut se connecter directement à la
base, placée dans un dossier protégé en accès comme par exemple \fpdb
(répertoire réservé aux bases par FrontPage). Dans la suite de cet essentiel,
nous utiliseront des accès à nos bases sans DSN.
Exemple avec une base Access :
<%
strProvider = "Driver = {Microsoft Access Driver (*.mdb)};DBQ = "
&Server.MapPath("\") &"\labo-microsoft\fpdb\site.mdb;"
Set rst = Server.CreateObject("ADODB.recordset")
rst.Open strProvider
%>
Application
Nous allons dans cet exemple faire afficher la liste de tous les articles du
site du laboratoire des technologies Microsoft.
<%
strProvider = "Driver = {Microsoft Access Driver (*.mdb)};DBQ = "
&Server.MapPath("\") &"\labo-microsoft\fpdb\site.mdb;"
Set rst = Server.CreateObject("ADODB.recordset")
' Chaine de connexion
strQuery = "SELECT * from articles"
' Requète SQL sur la base de donnée
rst.Open strQuery, strProvider
' Ouverture de la connexion
strtable = "<center><table border=1>" &vbcrlf
Do UNTIL rst.EOF
strtable = strtable &" <tr><td>" &rst("titre") &"</td></tr>" &vbcrlf
rst.MoveNext
Loop
' Affichage du champ Titre de chacun des enregistrements
strtable = strtable &"</table></center>" &vbcrlf
Response.write strTable
' Envoi du code HTML construit au navigateur Client
rst.Close
set rst=nothing
' fermeture et destruction de la connexion
%>
Formatage des chaînes de caractère pour SQL
Prenons une requête SQL simple. Notez que c'est une chaîne de caractères, il faut donc la délimiter
pas des guillemets.
Requete = "SELECT * FROM articles WHERE no=1"
Cet exemple ne pose aucun problème parce qu'il n'y a aucune autre chaîne imbriquée à l'intérieur,
car la recherche est effectuée sur un nombre (no=1). Mais si vous désirez faire une requête sur le
champ titre vous devrez ajouter les apostrophes autour de la chaîne à rechercher.
Requete = "SELECT * FROM articles WHERE titre='titre'"
Jusque ici tout va bien, mais si la chaîne de recherche contient une apostrophe ou un guillemet la
construction de la chaîne ne sera pas bien interprétée.
Requete = "SELECT * FROM articles WHERE titre='l'apostrophe expliquée'"
Ainsi, cette requête provoquera une erreur, car la chaîne recherchée est "l". Donc, " apostrophe
expliquée" sera un intrus dans sa construction.
En ASP, il faut doubler le caractère que l'on veut intégrer.
Exemples :
" L''apostrophe "
"Un ""mot"" entre guillemets"
Première Requête SQL : Sélection
Vous devez pointer un enregistrement dans une base de données en effectuant une requère SQL. Votre
recherche s'effectue sur le titre d'un article par exemple et vous désirez trouver l'enregistrement
"L'apostrophe expliquée".
Exemple :
Requete = "SELECT * FROM articles WHERE titre='L''apostrophe expliquée'"
Ou
ntitre = "L''apostrophe expliquée"
Requete = "SELECT * FROM articles WHERE titre='" &ntitre & "'"
Mise en pratique :
<table>
<%
strProvider="Driver={Microsoft Access Driver (*.mdb)};DBQ=" &Server.MapPath("\") &"\site.mdb;"
Set rst = Server.CreateObject("ADODB.recordset")
strtable = ""
strQuery ="SELECT numero,utilisateur from utilisateurs"
rst.Open strQuery, strProvider
Do UNTIL rst.EOF
strtable = strtable &"<tr>" &vbcrlf
strtable = strtable &" <td>" &rst("numero") &"</td>" &vbcrlf
strtable = strtable &" <td>" &rst("utilisateur") &"</td>" &vbcrlf
strtable = strtable &"</tr>" &vbcrlf
rst.MoveNext
Loop
Response.write strTable
rst.Close
%>
</table>
Deuxième Requête SQL : Ajout, Mise à jour et Effacement
L'ajout, la mise à jour ou l'effacement d'enregitrements dans une base de donnée diffèrent de la sélection car il n'y a pas d'affichage. Ici, il y a juste une requète à exécuter.
<%
strProvider="Driver={Microsoft Access Driver (*.mdb)};DBQ=" &Server.MapPath("\") & "\site.mdb;"
set objConn = server.createobject("ADODB.Connection")
set cm = Server.CreateObject("ADODB.Command")
objConn.Open strProvider
cm.ActiveConnection = objConn
strQuery="INSERT INTO articles(titre,texte) values('mon titre','mon texte')"
'Requète d'ajout
strQuery2="UPDATE articles SET
articles.titre = 'mon titre2',
liste_actions.priority = 'mon texte2'
where ((articles.numero) = 10)"
'Requète de mise à jour
strQuery3="DELETE articles.numero FROM articles WHERE ((articles.numero) = 10)"
'Requète d'effacement
cm.CommandText=strQuery
cm.Execute
%>
Si vous n'utilisez pas de chaîne SQL et modifier directement un champ, vous n'avez pas besoin de
doubler les apostrophes et les guillemets.
Exemple :
ntitre = "L'apostrophe expliquée"
ntexte = "texte"
connexion.AddNew
connexion.Fields("titre") = ntitre
connexion.Fields("texte") = ntexte
connexion.update
Non seulement cela fonctionne mais si vous aviez doublé l'apostrophe, les deux apostrophes seraient
sauvées dans la base.
Un conseil pour finir
Ne sauvegardez jamais dans une base une chaîne modifiée (par exemple avec des doubles guillemets) en
pensant par la suite éviter un traitement. Sauvez toujours vos informations le plus brut possible. Par exemple, n'ajoutez pas les balises HREF dans un texte qui comporte des hyperliens. C'est lors de l'affichage d'un texte qu'il faut le manipuler. Ça semble contraire aux pratiques du programmeur de refaire toujours le même traitement qui pourrait être fait une seule fois mais une loi l'emporte cette fois-ci. C'est la loi de la portabilité. En effet, on ne sait jamais ce qui peut arriver à une base de données ni ce que les langages de demain vont nous apporter. Un texte brut sera toujours valide alors qu'un texte altéré pour usage local ne le sera pas.
Chapitre 1 |
Chapitre 2 |
Chapitre 3 |
Chapitre 4
|
|
 |
Pour afficher ou poster un commentaire, cliquez sur ce lien : Forum-Microsoft
|
|