Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

TDD o Test-Driven Development
immagine docker per lavorare con lazarus e free pascal
Indice
Installare lazarus su mac osx sierra
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non)
Advanced Record Syntax: un esempio pratico
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
DB concetti fondamentali e DBGrid
Advanced Record Syntax
DB concetti fondamentali e ZeosLib
DB concetti fondamentali e connessioni standard
guida all'installazione di fpc trunk da subversion in linux gentoo
Creare un server multithread
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Free Pascal e Lazarus sul Raspberry Pi
fpcup: installazioni parallele di lazarus e fpc
Ubuntu - aggiornare free pascal e lazarus
Come interfacciare periferica twain
Lazarus 1.0
Aspetto retrò (Cmd Line)
Disporre le finestre in un blocco unico (come Delphi)
Zeos ... dietro le quinte (prima parte)
Lavorare con file in formato JSON con Lazarus
Overload di operatori
Dataset virtuale
Linux + Zeos + Firebird
Pascal Script
La gestione degli errori in Lazarus
Indy 10 - Invio email con allegati
Brute force
Le permutazioni
Da DataSource a Excel
StatusBar - aggirare l'errore variabile duplicata
Visualizzare un file Html esterno
Evidenziare voci TreeView
Toolbar
Direttiva $macro
Indy gestiore server FTP lato Client
TImage su Form e Panel
PopUpMenu sotto Pulsante (TSpeedButton)
Conversione numerica
Proprietà
Funzioni a parametri variabili
Overload di funzioni
Liste e puntatori
Conferma di chiusura di un applicazione
Il file: questo sconosciuto
UIB: Unified Interbase
System Tray con Lazarus
Intercettare tasti premuti
LazReport, PDF ed immagini
Lazarus e la crittografia
Ampliare Lazarus
Generare controlli RUN-TIME
TTreeview e Menu
TTreeView
Utilizzare Unità esterne
Lavorare con le directory
Realizzare programmi multilingua
Codice di attivazione
File INI
Esempio lista in pascal
Stabilire il sistema operativo
Recuperare codice HTML da pagina web
Trascinare un file nel programma
Mandare mail con Lazarus
Welcome to Italian community of Lazarus and Free Pascal. Please login or sign up.

Recenti

How To

Utenti
Stats
  • Messaggi totali: 20.582
  • Totale discussioni: 2.471
  • Online today: 310
  • Online ever: 5.949 (Luglio 30, 2026, 09:49:59 PM)
Utenti online
  • Users: 0
  • Guests: 5
  • Total: 5
5 Visitatori, 0 Utenti

Leggere dabase.DB sqlite3 da remote

Aperto da Giuani, Marzo 12, 2021, 02:25:31 PM

Discussione precedente - Discussione successiva

Giuani

Salve a tutti,
ho realizzato un piccolo database sqlite3 gestione biblioteca libri, tutto ok.
Ora vorrei mettere il database in un sito web e leggerlo da remote.
Ho girovagato un po' sul web, ma non ho trovato una soluzione.
Domanda:
qual è  il codice Lazarus per leggere un dabase.DB sqlite3 da remote ?
Grazie dell'attenzione

nomorelogic

ciao
dovresti avere un dbserver remoto da qualche parte, in ascolto su una determinata porta
nella connessione invece di specificare un db locale dovresti specificare un db remoto

però non credo che sqlite3 sia una buona scelta per un db remoto
non lo conosco affatto, ma se non ricordo male è stato concepito per utilizzo locale e monoutente

forse dovresti usare mysql per questo tipo di lavori
Imagination is more important than knowledge (A.Einstein)

Giuani

Grazie per  la risposta.
In verità ho solo caricato il database testi.DB sul sito, credendo che tale database potesse essere letto  da qualsiasi altra postazione in remote, ma da quel che leggo credo sia necessario altro sul sito remote dove è collocato il  DB testi.DB:
che cosa ?
dove lo posso trovare ?


Stilgar

Allora.sqlite è una librerira per lavorare in locale senza tanti sbattimenti. E' montato in tanti dispositivi embedded/mobile per la sua semplicità di utilizzo e poca necessità di risorse. Se vuoi poter leggere il tuo database da remoto devi poter permettere al tuo programma di accedere al file system del web server. Fargli credere che sia in locale, ma leggerlo da fuori. Credo che il tuo provider non veda di buon occhio la soluzione.
Se hai un piano hosting minimamente decente dovresti avere i dati di accesso al tuo db personale. In ogni caso, se sono piani "base" non dovresti poter raggiungere il database da fuori. Dovresti passare a infrastrutture un attimo più costose.
Se il web server è una macchina aziendale o domestico, chiedi al sistemista nel primo caso, nel secondo puoi installare MariaDB o FirebirdSQL.Convertire le tue tabelle sqlite in strutture relazionali remote e dialogare attraverso le librerie di accesso (dll/so).
Spero di aver dato una mano.

Stilgar

PS.A seconda delle scelte e degli scenari possiamo continuare con i suggerimenti.

Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Giuani

Si una grande mano.
Credevo a qualcosa di facile, ma ho capito che devo lavorarci sopra.
Ci provo.
Grazie di tutto.

SB

E' possibile usare sqlite in un sito web anche con hosting. Io lo faccio per il mio siterello.
Avendo a disposizione un sistema Windows+ASP.NET ho realizzato una dll in FP che può essere caricata dal codice C# della pagina.
A quel punto si passano alla dll i parametri che servono e puoi operare tranquillamente con FP+sqlite.
Nelle ultime versioni sqlite si è evoluto e dovrebbe essere multiutente.
Non hai le prestazioni dei DBMS più evoluti (che si pagano) ma per piccoli siti a basso traffico penso possa bastare.
Al momento funziona.
Certo può sempre succedere che in qualche modo ne blocchino l'utilizzo visto che non è previsto nel contratto di hosting.



Giuani


DragoRosso

@SB
"Nelle ultime versioni sqlite si è evoluto e dovrebbe essere multiutente."

No, ancora SQLite non è multiutente. Per renderlo multiutente la tua applicazione deve gestire l'accesso contemporaneo di più richieste, ma il motore di SQLite agirà sempre per singola "transaction".

Riferimento: https://www.sqlite.org/whentouse.html

Buon lavoro Giuani, hai una bellissima e appassionante sfida avanti a te.
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

SB

"Multiutente" nel senso che ammette connessioni contemporanee da parte di più utenti agli stessi file.
Poi l'accesso effettivo avviene tramite appositi interlock che limitano l'operatività.
Ovviamente non è un DBMS al pari di altri DBMS ben più corposi (e ottimizzati) che però richiedono installazione sul server o pagamento di quota extra.
Non avrà le stesse prestazioni degli altri ma per esigenze ridotte (spendere il meno possibile e pochi utenti contemporanei) potrebbe andare bene.
Certo se uno è disposto a spendere qualche centinaio di euro all'anno si può pensare a soluzioni più prestanti.

SB

Dal sito SQLite (https://www.sqlite.org/whentouse.html):
"Websites

SQLite works great as the database engine for most low to medium traffic websites (which is to say, most websites). The amount of web traffic that SQLite can handle depends on how heavily the website uses its database. Generally speaking, any site that gets fewer than 100K hits/day should work fine with SQLite. The 100K hits/day figure is a conservative estimate, not a hard upper bound. SQLite has been demonstrated to work with 10 times that amount of traffic.

The SQLite website (https://www.sqlite.org/) uses SQLite itself, of course, and as of this writing (2015) it handles about 400K to 500K HTTP requests per day, about 15-20% of which are dynamic pages touching the database. Dynamic content uses about 200 SQL statements per webpage. This setup runs on a single VM that shares a physical server with 23 others and yet still keeps the load average below 0.1 most of the time. "

La sua semplicità lo rende molto leggero e probabilmente il tempo di attesa per l'interlocking viene compensato dal ridotto tempo necessario per la connessione

DragoRosso

@SB

Concordo su quanto scrivi, ma devo solo precisare un concetto che deve essere chiaro:

"SQLite only supports one writer at a time per database file. But in most cases, a write transaction only takes milliseconds and so multiple writers can simply take turns. SQLite will handle more write concurrency that many people suspect. Nevertheless, client/server database systems, because they have a long-running server process at hand to coordinate access, can usually handle far more write concurrency than SQLite ever will."

Su questo concetto SQLite non è multiutente. Inoltre il meccanismo di "interlock", che è implementato nativamente "sul" sistema operativo può portare brutte soprese ...

"SQLite will work over a network filesystem, but because of the latency associated with most network filesystems, performance will not be great. Also, file locking logic is buggy in many network filesystem implementations (on both Unix and Windows).".

Se è necessario garantire le prestazioni (intendo sopratutto quelle di integrità), occorre pensarci molto bene prima di usarlo in maniera nativa multiutente.
Io comunque dal 2007 ho abbandonato quasi al 100% MSDE e SQLExpress, MySQL e altri a favore di SQLite (  ;D ), che ritengo sia un ottimo database, facilmente integrabile anche in architetture client / server rendondolo perfettamente multiutente, multiconcorrente  e con prestazioni assolutamente dignitose.

Penso che siamo andati un pò OT rispetto all'argomento del thread ... mi scuso se ho trascinato la discussione ....
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

Giuani

Che si sia andato oltre va bene.
A me interessa l'aspetto didattico e non tanti quello pratico, qui trovo indicazioni per studiare.
Grazie a tutti.

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.