version 11.3 (Modifiée)
SQL LOGIN{(source; utilisateur; motDePasse; *)}
Paramètre | Type | Description | |
source | Chaîne | Nom de la base externe ou | |
Adresse IP de la base externe ou | |||
Nom de la source de données dans le gestionnaire ODBC ou | |||
"" pour afficher le dialogue de sélection | |||
utilisateur | Chaîne | Nom d'utilisateur enregistré dans la source de données | |
motDePasse | Chaîne | Mot de passe de l'utilisateur | |
* | * | Appliquer à Debut SQL/Fin SQL | |
Si omis : ne pas appliquer (base locale), si passé : appliquer |
Description
La commande SQL LOGIN vous permet d'ouvrir une connexion avec une source de données SQL, définie dans le paramètre source. Elle désigne la cible des requêtes SQL exécutées ultérieurement dans l'application :
via la commande SQL EXECUTER,
via le code placé à l'intérieur des balises Debut SQL / Fin SQL (si le paramètre * est passé).
La source de données SQL peut être soit :
une base 4D Server externe à laquelle vous accédez directement,
une source ODBC externe,
le moteur SQL interne.
Vous pouvez passer dans source l'une des valeurs suivantes : une adresse IP, un nom de publication de base 4D, un nom de source de données ODBC, une chaîne vide ou la constante SQL_INTERNAL.
adresse IP
Syntaxe : IP:<Adresse IP>{:<PortTCP>}
Dans ce cas, la commande ouvre une connexion directe avec la base 4D Server exécutée sur l'ordinateur ayant l'adresse IP définie. Sur l'ordinateur "cible", le serveur SQL doit être lancé. Si vous passez un numéro de port TCP, il doit avoir été spécifié comme port de publication du serveur SQL dans la base "cible". Si vous ne passez pas de numéro de port TCP, le port par défaut sera utilisé (19812). Le numéro de port TCP du serveur SQL peut être modifié dans la page "SQL/Configuration" des Préférences de l'application.
Reportez-vous aux exemples 1 et 2.
nom de publication de base 4D
Syntaxe : 4D:<Nom_de_Publication>
Dans ce cas, la commande ouvre une connexion directe avec la base 4D Server dont le nom de publication sur le réseau correspond au nom spécifié. Le nom de publication réseau d'une base est défini dans la page "Client-Serveur/Configuration" des Préférences de l'application.
Reportez-vous à l'exemple 4.
Note : Le numéro de port TCP du serveur SQL 4D cible (qui publie la base 4D) et le numéro de port TCP du serveur SQL de l'application 4D ouvrant la connexion doivent être identiques.
nom de source de données ODBC valide
Syntaxe : ODBC:<Ma_DSN> ou <Ma_DSN>
Dans ce cas, le paramètre source contient le nom de la source de données telle qu'elle a été définie dans le gestionnaire du pilote ODBC.
Note : Par compatibilité avec les versions précédentes de 4D, il est possible d'omettre le préfixe "ODBC:". Toutefois pour des raisons de lisibilité du code il est conseillé d'utiliser ce préfixe.
Reportez-vous à l'exemple 4.
chaîne vide
Syntaxe : ""
Dans ce cas la commande provoque l'affichage de la boîte de dialogue de connexion, permettant de désigner manuellement la source de données à laquelle se connecter :
Cette boîte de dialogue comporte plusieurs pages. La page TCP/IP se compose des éléments suivants :
* Nom cible : ce menu est construit à l'aide de deux listes :
- la liste des bases ouvertes récemment en connexion directe. Le mécanisme de mise à jour de cette liste est identique à celui de l'application 4D, à la différence près que le dossier contenant les fichiers .4DLink est nommé "Favorites SQL v11" au lieu de "Favorites v11".
- la liste des applications 4D Server dont le serveur SQL est lancé et dont le port TCP pour les connexions SQL est égal à celui de l'application source. Cette liste est mise à jour dynamiquement à chaque nouvel appel de la commande SQL LOGIN sans le paramètre source. Le caractère "^" placé devant un nom de base indique que la connexion est effectuée en mode sécurisé via SSL.
* Adresse réseau : cette zone affiche l'adresse IP et éventuellement le port TCP de la base sélectionnée dans le menu Nom cible. Vous pouvez également saisir dans cette zone une adresse IP puis cliquer sur le bouton Connexion afin de vous connecter à la base 4D Server correspondante. Vous pouvez également spécifier le port TCP, en saisissant deux points (:) puis le numéro du port à la suite de l'adresse. Par exemple : 192.168.93.105:19855
* Utilisateur et Mot de passe : ces zones permettent de saisir les identifiants de la connexion.
* Les pages DSN utilisateur et DSN système affichent respectivement la liste des sources de données ODBC utilisateur et système définies dans le gestionnaire ODBC de la machine. Ces pages permettent de sélectionner une source de données et de saisir des identifiants afin d'ouvrir une connexion avec une source ODBC externe.
Si la connexion est établie, la variable système OK prend la valeur 1. Sinon, elle prend la valeur 0 et une erreur est générée. Cette erreur peut être interceptée via une méthode de gestion d'erreurs installée par la commande APPELER SUR ERREUR.
constante SQL_INTERNAL
Syntaxe : SQL_INTERNAL
Dans ce cas, la commande redirige les requêtes SQL suivantes vers le moteur SQL interne de la base.
Le paramètre utilisateur contient le nom de l'utilisateur autorisé à se connecter à la source de données externe. Par exemple, avec Oracle®, ce nom d'utilisateur peut être "Scott".
Le paramètre motDePasse contient le mot de passe de l'utilisateur autorisé à se connecter. Par exemple, avec Oracle®, ce mot de passe peut être "tiger".
Note : Dans le cas d'une connexion directe, si vous passez des chaînes vides dans les paramètres utilisateur et motDePasse, la connexion ne sera acceptée que si les mots de passe 4D ne sont pas activés dans la base cible. Sinon, la connexion est refusée.
Le paramètre facultatif * permet de changer la cible du code SQL exécuté au sein des balises Debut SQL/Fin SQL. Si vous ne passez pas ce paramètre, le code placé dans les balises Debut SQL/Fin SQL sera toujours adressé au moteur SQL interne de 4D, sans tenir compte du paramétrage défini par la commande SQL LOGIN. Si vous passez ce paramètre, le code SQL exécuté au sein des balises Debut SQL/Fin SQL sera adressé à la source définie par la commande.
Pour refermer la connexion courante et libérer la mémoire, il suffit d'exécuter la commande SQL LOGOUT. Toutes les requêtes SQL sont alors dirigées vers le moteur SQL interne de la base.
Si vous appelez une nouvelle fois SQL LOGIN sans avoir refermé explicitement la connexion courante, elle est automatiquement refermée.
Tous les paramètres sont facultatifs. Si aucun paramètre n'est passé, la commande provoquera l'affichage de la boîte de dialogue de connexion ODBC, permettant de désigner manuellement la source de données à laquelle se connecter.
La portée de cette commande est le process. Autrement dit, si vous souhaitez ouvrir deux connexions distinctes, vous devez créer deux process et ouvrir chaque connexion dans chaque process.
Exemples
(1) Cette instruction provoque l'affichage de la boîte de dialogue du gestionnaire ODBC :
SQL LOGIN
(2) Ouverture d'une connexion via le protocole ODBC avec la source de données externe "MonOracle". Les requêtes SQL exécutées via la commande SQL EXECUTER et les requêtes incluses dans les balises Debut SQL/Fin SQL seront redirigées vers cette connexion :
SQL LOGIN("ODBC:MonOracle";"Scott";"tiger";*)
(3) Ouverture d'une connexion avec le moteur SQL interne de 4D :
SQL LOGIN(SQL_INTERNAL;$utilisateur;$motdepasse)(4) Ouverture d'une connexion directe avec l'application 4D Server v11 SQL exécutée sur le poste ayant l'adresse IP 192.168.45.34 et répondant sur le port TCP par défaut. Les requêtes SQL exécutées via la commande SQL EXECUTER seront redirigées vers cette connexion, les requêtes incluses dans les balises Debut SQL/Fin SQL ne seront pas redirigées.
SQL LOGIN("IP:192.168.45.34";"John";"azerty")(5) Ouverture d'une connexion directe avec l'application 4D Server v11 SQL exécutée sur le poste ayant l'adresse IP 192.168.45.34 et répondant sur le port TCP 20150. Les requêtes SQL exécutées via la commande SQL EXECUTER et les requêtes incluses dans les balises Debut SQL/Fin SQL seront redirigées vers cette connexion.
SQL LOGIN("IP:192.168.45.34:20150";"John";"azerty";*)(6) Ouverture d'une connexion directe avec l'application 4D Server v11 SQL qui publie sur le réseau local une base dont le nom de publication est "DB_Compta". Le port TCP utilisé pour le serveur SQL des deux bases (défini dans la page "SQL/Configuratio"n des Préférences) doit être identique (19812 par défaut). Les requêtes SQL exécutées via la commande SQL EXECUTER seront redirigées vers cette connexion, les requêtes incluses dans les balises Debut SQL/Fin SQL ne seront pas redirigées.
SQL LOGIN ("4D:DB_Compta";"John";"azerty")(7) Cet exemple illustre les possibilités de connexion offertes par la commande SQL LOGIN :
TABLEAU TEXTE (30;aNames) TABLEAU ENTIER LONG(aAges;0) SQL LOGIN("ODBC:MonORACLE";"Marc";"azerty") Si (OK=1) `La requête suivante sera redirigée vers la base ORACLE externe SQL EXECUTER("SELECT Name, Age FROM PERSONS";aNames; aAges) `La requête suivante sera dirigée vers la base 4D locale Debut SQL SELECT Name, Age FROM PERSONS INTO :aNames, :aAges; Fin SQL `La commande SQL LOGIN suivante referme la connexion courante `avec la base externe ORACLE et ouvre une nouvelle connexion avec `une base externe MySQL SQL LOGIN ("ODBC:MySQL";"Jean";"qwerty";*) Si (OK=1) `La requête suivante sera redirigée vers la base MySQL externe SQL EXECUTE("SELECT Name, Age FROM PERSONS";aNames; aAges) `La requête suivante sera aussi redirigée vers la base MySQL externe Debut SQL SELECT Name, Age FROM PERSONS INTO :aNames, :aAges; Fin SQL SQL LOGOUT `La requête suivante sera dirigée vers la base 4D locale Debut SQL SELECT Name, Age FROM PERSONS INTO :aNames, :aAges; Fin SQL Fin de si Fin de si
Référence
Debut SQL, Fin SQL, SQL LOGOUT.
Variables et ensembles système
Si la connexion est correctement établie, la variable système OK prend la valeur 1, sinon elle prend la valeur 0.