on ma conseillé le Sqlite mais j’ai du mal a trouver des tutoriel pour expliqué comment l'utilisé avec delphi 7
on ma conseillé le Sqlite mais j’ai du mal a trouver des tutoriel pour expliqué comment l'utilisé avec delphi 7
Regarde la Zeos Lib, peut-être
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
je rame toujours avec le Sqlite y a pas un tuto ou un exemple comment l’utilisé avec le delphi 7 juste les info de base
- installé le Sqlite avec delphi
- crée une base sqlite
- l'ajout
- suppression
- modification
- recherche
??
Salut
Plutôt que SQLLite, utilise Firebird, autant faire les choses en grand. Même pour une application monoposte, ça reste pertinent grâce à la version Embedded du serveur pour laquelle serveur et client sont ensemble en local.
ZeosLIB fonctionne bien avec FB.
SQLLite a l'avantage d'être "léger" (pléonasme) car le moteur est embarqué dans l'exécutable mais je ne l'ai jamais mis en oeuvre.
Avec des BLOB Texte tu pourras charger un fichier texte dans un seul champ, petit veinard.
Paradox a le défaut d'être un peu gourmand en ressource (nombre de fichiers à ouvrir simultanément, d'être obsolète (et encore cela se discute) et surtout de ne pas se comporter toujours très bien en réseau surtout s'il y a de nombreux utilisateurs.
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
j'ai enfin pu réaliser le traitement avec les composant Zeolib +Sqlite3
pour l'ajout nouveau enregistrement
Maitre ajour ou Modification
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 procedure TForm1.Button3Click(Sender: TObject); begin // Si aucun enregistrement if DbGrid1.Datasource.Dataset.RecordCount = 0 then Exit; // Si aucun sélectionné if DbGrid1.Datasource.Dataset.RecNo < 0 then Exit; // ajouter un nouveau enrejestrement begin // Passer en mode édition DBGrid1.Datasource.Dataset.Append; // ajouter les données DBGrid1.Datasource.Dataset.FieldByName('Name').AsString := form1.Edit3.Text; DBGrid1.Datasource.Dataset.FieldByName('ProviderID').AsString := form1.Edit4.Text; DBGrid1.Datasource.Dataset.FieldByName('KeyIndex').AsString := form1.Edit5.Text; DBGrid1.Datasource.Dataset.FieldByName('Key').AsString := form1.Edit6.Text; DBGrid1.Datasource.Dataset.FieldByName('Comments').AsString := DateTimeToStr(now); // Valider DBGrid1.Datasource.Dataset.Post; end; end;
Suppression
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 procedure TForm1.Button2Click(Sender: TObject); begin // Si aucun enregistrement if DbGrid1.Datasource.Dataset.RecordCount = 0 then Exit; // Si aucun sélectionné if DbGrid1.Datasource.Dataset.RecNo < 0 then Exit; // Mettre à jour begin // Passer en mode édition DBGrid1.Datasource.Dataset.Edit; // Modifier les données DBGrid1.Datasource.Dataset.FieldByName('Name').AsString := form1.Edit3.Text; DBGrid1.Datasource.Dataset.FieldByName('ProviderID').AsString := form1.Edit4.Text; DBGrid1.Datasource.Dataset.FieldByName('KeyIndex').AsString := form1.Edit5.Text; DBGrid1.Datasource.Dataset.FieldByName('Key').AsString := form1.Edit6.Text; DBGrid1.Datasource.Dataset.FieldByName('Comments').AsString := DateTimeToStr(now); // Valider la modification DBGrid1.Datasource.Dataset.Post; end; end;
Recherche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Button1Click(Sender: TObject); begin // Si aucun enregistrement if DbGrid1.Datasource.Dataset.RecordCount = 0 then Exit; // Si il y a un enregistrement courant if DbGrid1.Datasource.Dataset.RecNo >= 0 then if MessageDlg('Voulez vous vraiment supprimer cet enregistrement ?', MtConfirmation, MbOkCancel, 0) = mrOk then DbGrid1.Datasource.DataSet.Delete; end;
le problème qu il me reste que j'arrive pas a résoudre c'est la création de la base si elle n'existe pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure TForm1.Edit2Change(Sender: TObject); begin // Arrête le filtrage de la table form1.ZTable1.Filtered:=false; // Test si il n'y a rien dans le TEdit if Trim(Edit1.Text) <> '' then begin // Construction du Filtre avec le texte saisi dans la zone TEdit form1.ZTable1.Filter := 'ProviderID like ' + QuotedStr(Edit2.Text + '*'); // Activation du filtre form1.ZTable1.Filtered := true; end; end;
comment on crée une base Sqlite3 ?
SQLite crée la base (le fichier) quand on s'y connecte s'il n'existait pas. Je suppose que le TZConnection.Connect devrait le faire.
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Il suffit d'un ExecuteDirect( 'CREATE TABLE IF NOT EXISTS matable (id INTEGER...)' );
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
j'ai fait comme suit
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE IF NOT EXISTS Mytable ([id] INTEGER PRIMARY KEY NOT NULL,[Name] TEXT NOT NULL,[ProviderID] TEXT NOT NULL,[KeyIndex] TEXT NOT NULL,[Key] TEXT NOT NULL,[Comments] TEXT NULL)
ça ne marche pas y a des erreurs je ne sais pas exactement ou ?
Tu as ici : SQL As Understood By SQLite qui est une aide précieuse pour la syntaxe des requêtes sous SQLite. J'écrirais donc plutôt (non testé) :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE IF NOT EXISTS Mytable (id INTEGER PRIMARY KEY, Name TEXT NOT NULL, ProviderID TEXT NOT NULL, KeyIndex TEXT NOT NULL, Key TEXT NOT NULL, Comments TEXT );
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
je n'ai plu d'erreur avec ce code
mais il ne crée aucune table ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part ZQuery1.SQL.add('CREATE TABLE Table (id INTEGER PRIMARY KEY NOT NULL,Name TEXT NOT NULL,ProviderID TEXT NOT NULL,KeyIndex TEXT NOT NULL,Key TEXT NOT NULL,Comments TEXT NULL)');
Est-il judicieux d'utiliser des noms réservés comme identificateurs ?
CREATE TABLE table ou KEY TEXT NOT NULL
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Tu as ici un exemple pour Lazarus, dont tu pourras pê t'inspirer.
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
je viens de crée un projet test pour voir le problème exactement
forme + ZConnection + ZTable + ZQuery + Button
ben la, la table et bien crée comme je le veut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Button1Click(Sender: TObject); Var Nombase : string ; begin Nombase := 'C:\test.db' ; With form1.ZConnection1 do Begin Database := Nombase ; ZQuery1.SQL.Text:='CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY NOT NULL,Name TEXT NOT NULL,ProviderID TEXT NOT NULL,KeyIndex TEXT NOT NULL,Key TEXT NOT NULL,Comments TEXT NULL)'; ZQuery1.execSql; End; end;
mais je ne comprend pas pourquoi ça ne marche pas dans l’événement AfterConnect ??
Bonjour,
Le ExecSQL + la Query pourrait être avantageusement remplacé par un ExecuteDirect
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager