PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Présentation
  • Remarques générales
  • Versions nécessaires
  • Utilisation d'ordres WLangage dans les requêtes SQL
  • Limitations de MySQL version 3.23x
  • Gestion de fichiers de taille importante
  • Requêtes de type INSERT et Identifiant automatique
  • Création de table avec la fonction HCréation
  • Support de Unicode
  • Connexion avec certificats SSL
  • Spécificités générales
  • Blocage des enregistrements
  • Enregistrements identiques
  • Transactions
  • Rubriques de type SET ou ENUM
  • Rubriques de type xBlob
  • Rubriques de type Tableau
  • Utilisation de requêtes INSERT/UPDATE pour insérer du texte dans une rubrique de type LONGBLOB (mémo binaire) sur MySQL
  • Indexation partielle des mémos et indexation full-text
  • Spécificités concernant les fonctions HFSQL et les fonctions SQL
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Accès Natif MYSQL : Spécificités et remarques
Accès NatifsDisponible uniquement avec ce type de connexion
Présentation
Les paragraphes suivants présentent les remarques générales et les spécificités de l'Accès Natif MySQL.
Remarque : A partir de la version 19, HFSQL est le nouveau nom de HyperFileSQL.
Remarques générales

Versions nécessaires

Attention : Cette version de l'Accès Natif MySQL fonctionne uniquement avec :
  • WINDEV 23 ou WEBDEV 23.
  • Couche cliente de MySQL (fichier LibMySQL.DLL) :
    • Couche Cliente 32 bits pour utiliser l'Accès Natif MySQL 32 bits (version 3.x à 5.x testée).
    • Couche Cliente 64 bits pour utiliser l'Accès Natif MySQL 64 bits (version 5.x testée).

Utilisation d'ordres WLangage dans les requêtes SQL

Dans les requêtes SQL, il n'est pas possible d'utiliser des ordres WLangage.

Limitations de MySQL version 3.23x

La base de données MySQL version 3.23x ne supporte pas :
  • le Fetch Partiel. L'utilisation du Fetch Partiel avec les fonctions SQL du WLangage a le même effet que si le Fetch Partiel n'était pas utilisé.
  • les Unions.

Gestion de fichiers de taille importante

Lors de la manipulation de fichiers de taille importante, tous les enregistrements sont chargés en mémoire. Pour réduire l'occupation mémoire, il est conseillé de :
  • utiliser un filtre (fonction HFiltre) avant d'initialiser un parcours (fonction HLitPremier / HLitDernier, ...)
  • utiliser des requêtes dont les conditions de sélection soient suffisamment discriminantes
  • éviter les recherches.

Requêtes de type INSERT et Identifiant automatique

Les requêtes de type INSERT (créées par programmation ou grâce à l'éditeur de requêtes) ne gèrent pas les identifiants automatiques. Pour utiliser un identifiant automatique, utilisez la fonction HAjoute sur la table.

Création de table avec la fonction HCréation

La fonction HCréation crée des tables de type "innoDB" pour permettre la gestion des blocages et des transactions. Consultez Accès natif MySQL : Particularités pour plus d'informations.

Support de Unicode

Lorsque Unicode est supporté sur la connexion (mode par défaut), le type des rubriques texte des requêtes exécutées avec la constante hRequêteSansCorrection est Unicode. Si une chaîne Unicode est affectée dans une chaîne Ansi, WINDEV et WEBDEV font automatiquement la conversion en utilisant l'alphabet défini avec la fonction ChangeAlphabet.
Si la connexion est ANSI (option "WD Unicode Support = 0" dans les informations étendues spécifiées avec les fonctions HDécritConnexion ou HOuvreConnexion), le type des rubriques texte des requêtes exécutées avec la constante hRequêteSansCorrection est ANSI.
Pour plus de détails sur les connexions Unicode ou ANSI, consultez Programmation d'une base de données MySQL avec les fonctions HFSQL.
Versions 18 et supérieures

Connexion avec certificats SSL

Pour l'établissement d'une connexion avec certificat SSL, il est nécessaire de :
  1. Installer une version du serveur MySQL gérant les connexions SSL. Pour plus de détails, consultez la documentation MySQL.
  2. Créer les certificats nécessaires.
  3. Etablir une connexion en utilisant les mots-clés suivants dans les informations avancées de la connexion :
    Mot-cléUtilisation
    SSL KeyChemin du fichier de clé.
    SSL CertChemin du fichier de certificat.
    SSL CAChemin du fichier de l'autorité de certification.
    SSL CAPathChemin du répertoire contenant les certificats des autorités de certification SLL reconnues, au format PEM.
    SSL CipherListe des chiffrements autorisés.
Exemple de connexion SSL sur la base CRM du serveur serveurmysql.domaine.fr :
MaConnexion est une Connexion

// Description de la connexion
MaConnexion..Utilisateur = "root"
MaConnexion..MotDePasse = "secret"
MaConnexion..Serveur = "serveurmysql.domaine.fr"
MaConnexion..BaseDeDonnées = "CRM"
MaConnexion..Provider = hAccèsNatifMySQL
MaConnexion..Accès = hOLectureEcriture

// Description des informations étendues pour une connexion SSL
MaConnexion..InfosEtendues = [
SSL KEY = E:\MySSLCertificates\mysql.key;
SSL CERT = E:\MySSLCertificates\mysql_cert.pem;
SSL CA = E:\MySSLCertificates\ca-cert.pem;
SSL CAPATH = E:\MySSLCertificates\CA\
]

// Ouverture de la connexion
HOuvreConnexion(MaConnexion)
Remarque : Ces paramètres correspondent aux paramètres de même nom de la fonction mysql_ssl_set de l'API C d'accès à MySQL.
Pour plus de détails, consultez la page d'aide Informations optionnelles de connexion.
Nouveauté 18

Connexion avec certificats SSL

Pour l'établissement d'une connexion avec certificat SSL, il est nécessaire de :
  1. Installer une version du serveur MySQL gérant les connexions SSL. Pour plus de détails, consultez la documentation MySQL.
  2. Créer les certificats nécessaires.
  3. Etablir une connexion en utilisant les mots-clés suivants dans les informations avancées de la connexion :
    Mot-cléUtilisation
    SSL KeyChemin du fichier de clé.
    SSL CertChemin du fichier de certificat.
    SSL CAChemin du fichier de l'autorité de certification.
    SSL CAPathChemin du répertoire contenant les certificats des autorités de certification SLL reconnues, au format PEM.
    SSL CipherListe des chiffrements autorisés.
Exemple de connexion SSL sur la base CRM du serveur serveurmysql.domaine.fr :
MaConnexion est une Connexion

// Description de la connexion
MaConnexion..Utilisateur = "root"
MaConnexion..MotDePasse = "secret"
MaConnexion..Serveur = "serveurmysql.domaine.fr"
MaConnexion..BaseDeDonnées = "CRM"
MaConnexion..Provider = hAccèsNatifMySQL
MaConnexion..Accès = hOLectureEcriture

// Description des informations étendues pour une connexion SSL
MaConnexion..InfosEtendues = [
SSL KEY = E:\MySSLCertificates\mysql.key;
SSL CERT = E:\MySSLCertificates\mysql_cert.pem;
SSL CA = E:\MySSLCertificates\ca-cert.pem;
SSL CAPATH = E:\MySSLCertificates\CA\
]

// Ouverture de la connexion
HOuvreConnexion(MaConnexion)
Remarque : Ces paramètres correspondent aux paramètres de même nom de la fonction mysql_ssl_set de l'API C d'accès à MySQL.
Pour plus de détails, consultez la page d'aide Informations optionnelles de connexion.

Connexion avec certificats SSL

Pour l'établissement d'une connexion avec certificat SSL, il est nécessaire de :
  1. Installer une version du serveur MySQL gérant les connexions SSL. Pour plus de détails, consultez la documentation MySQL.
  2. Créer les certificats nécessaires.
  3. Etablir une connexion en utilisant les mots-clés suivants dans les informations avancées de la connexion :
    Mot-cléUtilisation
    SSL KeyChemin du fichier de clé.
    SSL CertChemin du fichier de certificat.
    SSL CAChemin du fichier de l'autorité de certification.
    SSL CAPathChemin du répertoire contenant les certificats des autorités de certification SLL reconnues, au format PEM.
    SSL CipherListe des chiffrements autorisés.
Exemple de connexion SSL sur la base CRM du serveur serveurmysql.domaine.fr :
MaConnexion est une Connexion

// Description de la connexion
MaConnexion..Utilisateur = "root"
MaConnexion..MotDePasse = "secret"
MaConnexion..Serveur = "serveurmysql.domaine.fr"
MaConnexion..BaseDeDonnées = "CRM"
MaConnexion..Provider = hAccèsNatifMySQL
MaConnexion..Accès = hOLectureEcriture

// Description des informations étendues pour une connexion SSL
MaConnexion..InfosEtendues = [
SSL KEY = E:\MySSLCertificates\mysql.key;
SSL CERT = E:\MySSLCertificates\mysql_cert.pem;
SSL CA = E:\MySSLCertificates\ca-cert.pem;
SSL CAPATH = E:\MySSLCertificates\CA\
]

// Ouverture de la connexion
HOuvreConnexion(MaConnexion)
Remarque : Ces paramètres correspondent aux paramètres de même nom de la fonction mysql_ssl_set de l'API C d'accès à MySQL.
Pour plus de détails, consultez la page d'aide Informations optionnelles de connexion.
Spécificités générales

Blocage des enregistrements

Les options de blocage (constantes HBlocageEcriture et HBlocageLectureEcriture) utilisables avec les fonctions HFSQL ne sont pas gérées dans cette version.
Consultez Accès Natif MySQL : Particularités pour plus d'informations.

Enregistrements identiques

L'Accès Natif MySQL n'est pas capable de différencier deux enregistrements identiques (dont les valeurs de toutes les rubriques sont égales, sans tenir compte des rubriques de type mémo).
En cas de modification ou de suppression d'enregistrement, tous les enregistrements identiques seront modifiés ou supprimés.

Transactions

Pour gérer les transactions, il est nécessaire d'utiliser un type de la table MySQL permettant de gérer les ordres BEGIN, COMMIT et ROLLBACK.
Consultez Accès Natif MySQL : Particularités pour plus d'informations.

Rubriques de type SET ou ENUM

Les rubriques de type SET ou ENUM sont automatiquement traitées et importées sous forme de mémo texte sous WINDEV/WEBDEV. En effet les rubriques de type SET ou ENUM n'ont pas d'équivalence en HFSQL. Elles contiennent des valeurs numériques (indices) qui correspondent à des valeurs "texte". Ce sont ces valeurs "texte" qui sont importées.

Rubriques de type xBlob

Les rubriques de type xBlob sous MySQL sont automatiquement traitées et importées sous WINDEV/WEBDEV :
  • les rubriques BLOB sont importées sous forme de rubriques de type mémo binaire.
  • les rubriques LONGTEXT sont importées sous forme de rubriques de type mémo texte.

Rubriques de type Tableau

Les rubriques de type tableau ne sont pas gérées par l'Accès Natif. Si vous utilisez une rubrique tableau, seule la valeur de l'indice 1 du tableau sera manipulable avec les fonctions HFSQL (en écriture et en lecture).

Utilisation de requêtes INSERT/UPDATE pour insérer du texte dans une rubrique de type LONGBLOB (mémo binaire) sur MySQL

Pour permettre la gestion des rubriques Unicode, les connexions de l'Accès Natif MySQL sont ouvertes en UTF8 : toutes les requêtes et les données sont échangées en UTF8 avec le serveur.
Le serveur convertit la requête et les valeurs dans l'alphabet (charset) correspondant à chaque colonne, sauf dans le cas d'une rubrique LONGBLOB (mémo binaire) : dans ce cas, la valeur est insérée telle qu'elle.
Pour une rubrique LONGBLOB :
  • si la connexion est ANSI, la valeur texte insérée est ANSI.
  • si la connexion est UTF8, la valeur texte insérée est UTF8, ce qui peut poser un problème de compatibilité avec l'existant.
Pour ne pas avoir ce problème de conversion en UTF8, il est possible :

Indexation partielle des mémos et indexation full-text

L'indexation partielle des mémos ainsi que l'indexation full-text ne sont pas prises en compte :
  • lors de l'importation des tables MySQL dans l'analyse.
  • lors de l'utilisation de la fonction HCréation.
Si ces fonctionnalités sont définies dans l'analyse, elles seront prises en compte uniquement lors de l'exécution de requêtes SQL (avec la constante hRequêteSansCorrection) utilisant les fonctions SQL "CREATE TABLE" et "MATCH AGAINST".
Spécificités concernant les fonctions HFSQL et les fonctions SQL
Les spécificités concernant l'utilisation des fonctions HFSQL et des fonctions SQL avec l'Accès Natif MySQL sont les suivantes :
LimitationsFonctions concernées
Requête multi-fichier :
Les fonctions HAjoute, HModifie et HSupprime ne sont pas supportées.
HAjoute
HModifie
HSupprime
Les recherches réalisées sur certaines requêtes complexes avec la fonction HLitRecherche* peuvent échouer dans cette version.
Ce problème sera corrigé dans une prochaine version.
HLitRecherche, HLitRecherchePremier, HLitRechercheDernier
Lors de l'utilisation de l'Accès Natif MySQL, il est nécessaire de préciser la "DataBase" utilisée.
Si vous utilisez la fonction HConnecte, la "dataBase" doit être spécifiée dans les informations complémentaires de la manière suivante :
"initial catalog = NomDataBase"
HConnecte
En création de tables avec la fonction HCréation, les noms des tables ne doivent pas contenir d'accent (Exemple : "FichierAccentué").
Ceci est un problème interne à MySQL (testé sur les versions 3.23.52-max-nt et 3.23.47-max-nt du serveur MySQL). L'exécution de l'ordre SQL "DROP TABLE", effectuée par HCréation pour supprimer la table si elle existe déjà, peut provoquer un arrêt inopiné du serveur MySQL.
Consultez Accès Natif MySQL : Particularités pour plus d'informations.
HCréation
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire