DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Connecteurs Natifs/Accès Natifs / Connecteur Natif SQLite
  • Présentation
  • Remarques générales
  • Versions nécessaires
  • Type et contenu des rubriques
  • Type déclaré
  • Type NUMERIC ou DECIMAL
  • Identifiant automatique
  • Unicode
  • Sensibilité à la casse
  • Sensibilité à l'accentuation et aux caractères spéciaux
  • Remarques et spécificités du Connecteur Natif SQLite
  • Optimisation des opérations d'écriture multiples
  • Batchs de requêtes
  • Fonction HCréation
  • Blocage des enregistrements
  • Blocage "Database is locked"
  • Ordres SQL non gérés
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Connecteur Natif SQLite : Spécificités et remarques
Connecteurs Natifs (Accès Natifs)Disponible uniquement avec ce type de connexion
Présentation
Les paragraphes suivants présentent les remarques générales et les spécificités du Connecteur Natif SQLite.
Remarques générales

Versions nécessaires

Attention : Cette version du Connecteur Natif SQLite ne fonctionne qu'avec WINDEV et/ou WEBDEV SaaS.
Type et contenu des rubriques

Type déclaré

Dans les bases de données SQLite, les rubriques possèdent un type "déclaré". Cependant, le type de chaque valeur peut être différent de ce type "déclaré".
Il est donc possible de stocker n'importe quelle valeur, de n'importe quelle longueur, dans n'importe quel type de rubrique, théoriquement sans perte (exemple : 'toto' peut être stocké dans une rubrique de type entier).
Ce fonctionnement n'est pas disponible en HFSQL. Le Connecteur Natif va donc essayer de convertir la valeur lue sur la base dans le type "déclaré" de la rubrique.
Contournement : Il est conseillé de forcer le type de la rubrique dans l'analyse à "Texte". Dans ce cas, l'Accès Natif convertira toutes les valeurs dans le type texte, ce qui permettra de lire et d'afficher n'importe quel type de valeur.
SQLite stocke les valeurs dans l'un des types suivants :
  • NULL.
  • INTEGER.
  • REAL.
  • TEXT.
  • BLOB.
Pour plus de détails, consultez la documentation de SQLite.

Type NUMERIC ou DECIMAL

Le fonctionnement interne de SQLite limite la précision des rubriques de type NUMERIC à 15 chiffres car en interne la valeur est généralement stockée sous forme de réel.

Identifiant automatique

Sur SQLite, chaque enregistrement possède un identifiant unique de type entier 64 bits : le ROWID.
Bien que cette rubrique soit "cachée" par défaut par le moteur SQLite, il est toujours possible d'y accéder en utilisant un des noms spéciaux suivants :
  • "ROWID",
  • "_ROWID_",
  • "OID".
Les recherches sur l'identifiant "ROWID" sont généralement deux fois plus rapides que les recherches sur n'importe quelle autre clé primaire.
Le Connecteur Natif SQLite importe donc systématiquement la colonne "ROWID" afin de privilégier son utilisation pour optimiser les performances.
Remarques :
  • Si un fichier possède une rubrique de type "INTEGER PRIMARY KEY", cette rubrique est un alias de la rubrique "ROWID". Dans ce cas, la rubrique ROWID sera importée sous ce nom.
  • Si le nom "ROWID" est déjà utilisé par une autre rubrique du fichier, le Connecteur Natif utilise l'un des autres noms de l'identifiant unique : "_ROWID_" ou "OID".

Unicode

Toutes les chaînes de caractères sont UNICODE.
Tous les échanges avec le moteur SQLite sont faits en UTF8.
Si dans l'analyse, une chaîne de caractères est de type ANSI, le Connecteur Natif effectue automatiquement toutes les conversions nécessaires.

Sensibilité à la casse

Le Connecteur Natif gère la sensibilité à la casse (option "collate binary" ou "collate nocase") lors de la création ou de l'importation d'un fichier existant.
L'insensibilité à la casse est gérée uniquement pour les caractères Latin 1.

Sensibilité à l'accentuation et aux caractères spéciaux

Toutes les rubriques sont toujours sensibles à l'accentuation et aux caractères spéciaux sur une base de données SQLite.
Remarques et spécificités du Connecteur Natif SQLite

Optimisation des opérations d'écriture multiples

Chaque opération d'écriture (par exemple effectuée par les fonctions HAjoute, HModifie, HSupprime) est effectuée par défaut dans une transaction.
Si aucune transaction n'est démarrée, une transaction est débutée automatiquement avant l'opération et terminée automatiquement après l'opération.
Conseil : Les performances d'une boucle d'écriture seront meilleures en effectuant toutes les opérations dans la même transaction. Pour cela, il suffit d'appeler la fonction SQLTransaction avant la boucle puis la fonction SQLTransaction après la boucle.
Exemple :
SQLTransaction(sqlDébut, <Connexion>)
// Boucle d'écritures
// ...
SQLTransaction(sqlFin, <Connexion>)

Batchs de requêtes

Le Connecteur Natif ne gère pas les batchs de requêtes (c'est-à-dire plusieurs requêtes séparées par des ';' exécutées en une seule fois).
Il faut exécuter une requête à la fois.
Astuce : Il est possible de débuter une transaction, exécuter/parcourir toutes les requêtes une par une, puis de terminer la transaction.

Fonction HCréation

La fonction HCréation peut échouer (erreur "database table is locked") si les conditions suivantes sont réunies :
  • le fichier à créer existe déjà.
  • un parcours est en cours sur un autre fichier de la même base de données.
Ceci est dû à une limitation de la base de données SQLite.

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.
Remarque : Seuls les blocages effectués par les fonctions SQL sont gérés. Le blocage est géré uniquement au niveau du fichier de données par SQLite.

Blocage "Database is locked"

Lors de lectures concurrentes (réalisées par plusieurs threads ou process) sous Windows, une erreur aléatoire de blocage ("database is locked") provenant de la base de données SQLite peut apparaître. Cette erreur ne provient pas du Connecteur Natif SQLite.

Ordres SQL non gérés

Le Connecteur Natif SQLite ne supporte pas :
  • les instructions suivantes :
    • INSTR
    • PATINDEX
    • TOP
    • BOTTOM
    • LOG
    • LN
    • EXP
    • POWER
    • SIGN
    • SQRT
    • COS
    • SIN
    • TAN
    • MOD
    • MID
    • RIGHT et FULL OUTER JOIN
  • les concaténations de style (par exemple SELECT CLIENT.VILLE + '////' + CLIENT.CODEPOSTAL AS CONCAT1 FROM CLIENT WHERE CLIENT.VILLE + '////' + CLIENT.CODEPOSTAL LIKE 'O%')
Version minimum requise
  • Version 16
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 26/06/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale