Autore Topic: primi approcci con sqlite3  (Letto 4428 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
primi approcci con sqlite3
« il: 17 Dicembre 2008, 17:26:40 »
Mentre cerco notizie sulla gestione di un DB-sqlite3, partendo dalla sua creazione, cerco di appuntare sulla carta i passi da inserire all'interno di un programma. Una delle prime curiosità che ho cercato di esaudire é quella di dovere gestire un DB già strutturato o di strutturarlo nel programma stesso (logicamente solo la prima volta). Ho visto, attraverso i post relativi ed attraverso programmini di prova messi a disposizione dai più esperti che é possibile creare un DB durante l'esecuzione del codice gambas e questo mi fa molto piacere (penso che knoda non me ne vorrà). Certo un programma che legge e aggiorna una o più tabelle di un DB predefinito con Knoda o con altro strunmento compatiubile con sqlite3 risulta più veloce da mettere a punto, ma non mi permetterebbe di fare esperienza anche in fase di creazione. ;-)

Nei post che ho guardato ho fatto attenzione all'individuazione del DB in HD e non ho trovato descritto in maniera elementare la dichiarazione  del path completo fino alla directory che contiene il DB; esempiio:
Citazione

' Gambas class file
PUBLIC $hconn1 AS Connection
PUBLIC $hconn2 AS Connection


PUBLIC SUB Button1_Click()
    DIM $hConn AS Connection
    DIM sName AS String ' nome del database
   
    $hConn = NEW Connection ' inizializza una nuova connessione
 
    sName = "esempio.db"    ' imposto i parametri di connessione

    WITH $hConn
      .Type = "sqlite3"       'tipo di database
      .Host = User.Home        percorso del database       °°° ??? °°°
    END WITH
..........
END

Mi sono permesso di ripotrtare qualche riga di codica dal programmino di prova che molto cortesemente mi ha fornito fsurfing, e spero di non provocare il suo disappunto per questo, allo scopo di soffermarmi sulla riga ".Host" della funzione Widh. Infatti quando leggo
Codice: [Seleziona]

 .Host = User.Home  

non capisco  in quale directory sia ubicato il DB, o perlomeno, penso che sia nella directoy home dell'utente.

Supponiamo invece che il DB sia in una directory diversa dalla Home_user; per Es.:
Citazione

home -> Utente_x -> gambas -> progetti -> progetto1 -> esempio.db


Potrebbe inoltre il DB trovarsi nella stessa directory di ProVaGambas (il programma che dovrà gestirlo) oppure essere in una directory diversa.
Ecco, restando a quello che ho capito, io scriverei:
Codice: [Seleziona]

 .Host = home.Utente_x.gambas.progetti.progetto1  

 :uhm:
Non é che non mi fidi di me stesso, ma non mi pare che somigli all'esempio di partenza di fsurfing, nemmeno nella sua parte iniziale.

Dico bene?
 :ciao:
:ciao:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #1 il: 17 Dicembre 2008, 18:35:15 »
+ o - ci sei

tra parentesi sto scrivendo una piccola guida per i "primi passi" con i db sqlite
lo postata in questo post guida sqlite incompleta.

in linea di massima :

sName = "esempio.db"  indica il nome del database e non il percorso
.Host = User.Home     indica invece il percorso

in realta potresti omettere .host se nel nome inserisci il percorso completo

Citazione
.Host = User.Home


in questo caso il db sarà posizionato nella home dell' utente

Citazione
Potrebbe inoltre il DB trovarsi nella stessa directory di ProVaGambas (il programma che dovrà gestirlo) oppure essere in una directory diversa. Ecco, restando a quello che ho capito, io scriverei:


in linea di massima ti sconsiglio di memorizzare il db nella stessa directory del programma, questo perchè se mai dovessi creare un eseguibile del tuo programma il db verrebbe inglobato all' interno dell' binario aumentandone la dimensione ma soprattuto non riusciresti ad accedervi.

se invece lo vuoi posizionare comunque nella directory di programma basta che imposti il nome con sname e non metti nulla come host
se il db invece è in una cartella all' interno della cartella di programma (ad esempio nella cartella dati) imposterai .host= "dati"


Citazione
.Host = home.Utente_x.gambas.progetti.progetto1


questa scrittura non ha senso al limite sarebbe così:

.Host = home.Utente_x & "/gambas/progetti/progetto1"

spero di esere comprensibile :)

buon lavoro

ciao ciao

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #2 il: 17 Dicembre 2008, 23:02:32 »
Citazione

fsurfing ha scritto:
+ o - ci sei

tra parentesi sto scrivendo una piccola guida per i "primi passi" con i db sqlite
lo postata in questo post guida sqlite incompleta.

...bla...bla...bla...


Citazione
.Host = home.Utente_x.gambas.progetti.progetto1

questa scrittura non ha senso al limite sarebbe così:
Codice: [Seleziona]

.Host = home.Utente_x & "/gambas/progetti/progetto1"



Grazie per la segnalazione della guida: andrò a consultarla.

su: <<.Host = home.Utente_x & "/gambas/progetti/progetto1">>, penso di avere capito ed ho anche capito che ho avuto ragione a non fidarmi del mio naso (é grosso ma non riconosce l'odore dell'arrosto che sta andando a fumo  :-)  :-) ). Sei stato di grande aiuto. Grazieeee!!
Ora posso provare; credo di avere le idee un pò più chiare. Ti farò sapere.
:-D

Ciao.
:ciao:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #3 il: 17 Dicembre 2008, 23:10:03 »
scusa ho fatto un errore

Citazione
.Host = home.Utente_x & "/gambas/progetti/progetto1"


e così :


.host=user.home &  "/gambas/progetti/progetto1"


oppure :

.host="/home/utente_x/gambas/progetti/progetto1"


a seconda che tu voglia dare un percorso relativo (che ti permette di usare il file su qualsiasi pc indipendentemente  dal nome della home) oppure fisso ( in questo caso funzionera solo sul tuo pc )

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: primi approcci con sqlite3
« Risposta #4 il: 18 Dicembre 2008, 06:43:10 »
Oppure la cosa più semplice è mettere il DB nella cartella dove risiede il programma ed usare come indirizzo .host = Application.Path.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #5 il: 20 Dicembre 2008, 19:10:00 »
Citazione

leo72 ha scritto:
Oppure la cosa più semplice è mettere il DB nella cartella dove risiede il programma ed usare come indirizzo .host = Application.Path.


Ho letto solo oggi, a fine prova, il tuo consilgio, ma farò un'ulteriore prova per la messa punto pratico-logica di questo primo approccio di programma.

Ecco quello che sono riuscito a fare:
Codice: [Seleziona]

  PUBLIC DB_Connection AS Connection


PUBLIC SUB _new()
 
END

PUBLIC SUB Form_Open()
  DIM DB_Connection AS NEW Connection   'inizializza la nuova connessione
  DIM Esito AS Result
  DIM DBname AS String  'Nome del Database
  DIM DB_path AS String 'Percorso di ricerca del Database ContabFam.db
 
  DBname = "Archivio.db"  'imposto i parametri di connessione
  DB_path = User.Home & "/Gambas/Gambas_Progetti/Progetto1/Proget1_DB"
 
  WITH DB_Connection
    .Type = "sqlite3"
    .Host = DB_path
    .Login = ""
    .Password = ""
  END WITH

  DB_Connection.Open    'Tento l'apertura del DB, se presente
  IF NOT DB_Connection.Databases.Exist(DBname) THEN   'verifica che il DB non esista
            SELECT Message.ERROR("Attenzione! ->  archivio '" & DBname & "' NON TROVATO", "Creare DB ex novo", "Uscita dal programma")
                      CASE 1
                          DB_Connection.Databases.Add(DBname)         'crea il DB
                          DB_Connection.CLOSE               'chiude il DB
                          Message.Info("DB '" & DBname & "' Creato - FINE PROVA ")
                      CASE 2
                          Message.Info("hai premuto il pulsante: Uscita dal programma - FINE PROVA")
            END SELECT
            QUIT    'Esce dal programma
  ELSE  
          Message.Info("Il DB" & DBname & "ESISTE GIÀ - FINE PROVA")
          DB_Connection.CLOSE               'chiude il DB
          QUIT  'Esce dal programma
  ENDIF
END

 :-D

Ho faticato un pò per cominciare ad assorbire la nuova mentalità, ma penso di essere sulla buona strada.

Nella verifica della presenza o meno del DB, dopo la " DB_Connection.Open", ho preferito gestitre come eccezionale la condizione di "NOT Exist", in quanto, dopo averlo creato la prima volta per tutte le altre innumerevoli volte di utilizzo, me lo ritroverò bello e presente; pertanto probabilmente l'esecuzione é leggermente più veloce e la lettura del codice diventa più scorrevole ai miei occhi.

Ora riprovo modificando il path e se tutto si rende autodinamico, come spero, posso benissimo passare alla definizione della prima tabella.

Grazie per la collaborazione e, se non ci dovessimo risentire prima del 25-dic.,
Buooon Naataalee a tutti!!!    :pint:
 :ciao:  :ciao:
:ciao:

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #6 il: 22 Dicembre 2008, 14:41:31 »
La prova della creazione di una tabella dentro il DB appena nato funzionerebbe se non avessi bisogno di definire una primary key distribuita su tre campi. Leggendo però il "A Beginner's Guide to Gambas" apprendo quanto segue:
Citazione
PrimaryKey will return or set the primary key of the table.The primary key is a string array containing the name of each primary key field.  System will return a TRUE value if the database is a system database. Type returns or sets the type of a table. This property is unique to MySQL and is only used with MySQL databases.
:uhm:

Per maggiore chiarezza: ho eseguioto i seguenti passi:
Codice: [Seleziona]

DIM sql AS String
DIM sqltable AS Result
................
WITH
 DB_Connection
   .Name = DBname
   .OPEN    'Riapro il DB
END WITH
                       
sql = "CREATE TABLE 'TabPro1'  ("
sql = sql & " 'Datagg' CHAR(8) DEFAULT NULL PRIMARY KEY, "  
SQL = SQL & " 'NuProgg' INTEGER PRIMARY KEY,"          
SQL = SQL & " 'CoVogg' CHAR(8) DEFAULT not NULL PRIMARY KEY,"          
SQL = SQL & " 'Descrgg' VARCHAR(100) DEFAULT NULL,"
SQL = SQL & " 'Impgg' FLOAT DEFAULT not NULL);"
sqltable = DB_Connection.Exec(sql)


L'esecuzione mi ha fornito il seguente errore:
Citazione
Query failed. SQL error or m issing databse


Ho provato a limitare la primary key ad un solo elemento di tabella e la tabella é stata creata con successo.

La mia soluzione pratica sarebbe quella di creare un campo primary key comprendente tutti i campi assegnati come primary key nell'esempio appena riportato, però penso che avrei difficoltà successivamente nelle ricerche parziali.

Penso tuttavia che dalla stesura della guida Gambas ad oggi, anche Sqlite sia cresciuto, per cui potrebbe esere che si possa gestire ormai una primary key costituita dal concatenamento dei campi che la compongono, per cui esiste già una soluzione che nei post del Forum non ho trovato (o non sono stato capace di trovare). :-(

Spero tanto che la Vostra esperienza conoscitiva mi possa illuminare. Grazie ancora e rinnovati Auguri di Buon Natale! :ciao:  :ciao:
:ciao:

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: primi approcci con sqlite3
« Risposta #7 il: 22 Dicembre 2008, 15:36:15 »
Ho provato ad eseguire la tua query direttamente dentro una sessione di SQLite e questo è stato l'errore riportato:
Citazione
SQL error: table "TabPro1" has more than one primary key

Deduco quindi che SQLite non tratti più di 1 chiave primaria.

Ma perché ti servono 3 chiavi primarie? Non puoi fare con una sola chiave e poi filtrare i risultati con le query?
Visita il mio sito personale: http://www.leonardomiliani.com

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #8 il: 22 Dicembre 2008, 16:10:33 »
La sintassi mi pare errata, dato che la Primary Key deve essere unica, nel senso che questa è un indice particolare ma, al contrario dei normali indici, se c'è ce nè solo una.
Quando si tratta di indici (o ciavi primarie) su più campi, è buona norma usare per la loro creazione la specifica sintassi, che è normalmente a parte della definizione dei singoli campi; un esempio, ma dipende dal motore db, potrebbe essere:

CONSTRAINT table_pk(campo1, campo2,...) AS PRIMARY KEY

La dichiarazione fatta sul singolo campo, potrebbe essere valida se questo è l'unico campo che compone la chiave primaria; in caso contrario ci sarebbero problemi anche per capire qual'è l'ordine dei campi della chiave (che potrebbe anche non corrispondere all'ordine con cui sono definiti i campi nella creazione della tabella.
Poi, lo scopo principale delle chiavi primarie è quello di definire una regola per non incorrere in duplicazioni di record.
Nel caso occorrano diversi ordinamenti dei dati, allora si possono usare i normali indici.

Purtroppo, e anche questo problema me lo conferma, SQLite non esegue controlli approfonditi sui comandi sql, permettendo di salvare informazioni incongruenti. La cosa bella è che poi se ne accorge in fase d'uso, emettendo un messaggio di quel tipo... ma cavolo, me l'hai permesso, ora non lo capisci?
Come avevo già scritto in altre discussioni, anche il capire che tipo di campo vuoi costruire in una tabella è demandato ad una logica, a dir poco, grossolana; come descritto nella doc ufficiale di SQLite, il motore gestisce solo 4 (quattro) tipi di dato (nella versione 3, mentre nella 2 era solo 1... stringa...), e la ticologia del campo viene definita andando a vedere se all'interno del nometipo ci sono stringhe del tipo: *CHAR*, *INT*, *DATE*, *BLOB*, ecc. Anche le dimensioni sono predefinite per tipo, e quelle dichiarate nella sintassi "CREATE..." vengono ignorate.

Le mie non sono critiche a SQLite, ma solo un modo per dire di fare attenzione a come si usa questo motore; ovviamente picavbg, essendo alle prima armi, non ne è a conoscenza, per cui ho ritenuto avvertire anche lui dei problemi a cui và incontro.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #9 il: 23 Dicembre 2008, 00:20:34 »
Citazione

md9327 ha scritto:
La sintassi mi pare errata, dato che la Primary Key deve essere unica, nel senso che questa è un indice particolare ma, al contrario dei normali indici, se c'è ce nè solo una.
Quando si tratta di indici (o ciavi primarie) su più campi, è buona norma usare per la loro creazione la specifica sintassi, che è normalmente a parte della definizione dei singoli campi; un esempio, ma dipende dal motore db, potrebbe essere:

CONSTRAINT table_pk(campo1, campo2,...) AS PRIMARY KEY


Si, é vero che i campi elementari di tabella formanti, tutti insieme, la chiave primaria possono essere distribuiti in maniera non sequenziale nella struttura della tabella. Ricordo benissimo quando anni fa ho studiato i comandi sql per la gestione dei data base. Solo che poi non mai potuto mettere in pratica quanto studiato, perché poco dopo i miei impegni professionali sono cambiati. A parte codesta mia riflessione, sto conoscendo ora sqlite3 ed anche se devo convenire di avere ragionato poco sulla costruzione dell'insieme di campi che deve costituire l'unica chiave primaria della tabella, non ho capito, leggendo la guida SQLite nel sito "http://www.sqlite.org/lang.html", che dovevo usare la funzione "constraint table". :oops:
Come al solito la descrizione della guida nella solita lingua inglese mi ha sferrato uno dei suoi tiri mancini.

Grazie per il suggerimento; credo di avere capito.
 :ciao:  :ciao:
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #10 il: 23 Dicembre 2008, 18:51:22 »
Per un supporto morale, ti dico che anche la documentazione sqlite, lascia un pò a desiderare...

Ad ogni modo, credo tu debba partire dai principi base della sintassi sql (nella fattispecie specifiche SQL-92), e poi andare ad analizzare le particolari applicazioni di questa sintassi da parte dei vari dbms.
SQLite ne adotta solo una piccola parte, e non completamente.
PostgreSQL adotta lo standard alla lettera, con aggiunte di alcune funzionalità utili, sviluppate da contributori vari; questo un pò per seguire le orme di Oracle che, a mio avviso, è il massimo (ma è commerciale!).
MySQL lo adotta quasi completamente, ma il suo scopo, a quanto pare, è quello di orientarsi più sulla velocità e per gli ambienti web (vedi CMS); già prima non era completamente open-source, ma ora che se l'è comprato la SUN, non sò come andrà a finire (sicuramente usufrirà del supporto di una grande azienda...).

In ambiente Linux, non esistono altri motori di database degni di nota, oltre quelli che ho menzionato.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #11 il: 24 Dicembre 2008, 14:48:22 »
Citazione

md9327 ha scritto:
... credo tu debba partire dai principi base della sintassi sql (nella fattispecie specifiche SQL-92), e poi andare ad analizzare le particolari applicazioni di questa sintassi da parte dei vari dbms.


Debbo essere sincero: non ho guardato subito le specifiche SQL-92, perché prima ho voluto fare ancora una prova: ho guardato con molta attenzione il non facile schema grafico-intuitivo presente in "www.sqlite.org" per la costruzione del comando SQL "CREATE TABLE" ed ho tracsritto su carta i segmenti dell'istruzione necessaria per la creazione della mia prima tabella. Ho così, passo dopo passo, verificato la sintassi scritta nel programma ed ho ottenuto alla fine il seguente codice gambas:
Codice: [Seleziona]

DIM sql AS String 'serve per eseguire i comandi sul DB
DIM sqltable AS Result
................
sql = "CREATE TABLE 'Movimgg' ("
sql = sql & " 'DtMovvgg' CHAR(8),"
SQL = SQL & " 'NuProMovvgg' INTEGER,"          
SQL = SQL & " 'CoVocMovvgg' CHAR(8),"          
SQL = SQL & " 'DescrMovvgg' VARCHAR(100) DEFAULT NULL,"
SQL = SQL & " 'MValMovvgg' CHAR(1) DEFAULT NULL,"        
SQL = SQL & " 'ImpMovvgg' FLOAT DEFAULT NULL,"
SQL = SQL & " 'BenefMovvgg' CHAR(1) DEFAULT NULL,"
SQL = SQL & "  PRIMARY KEY ("
SQL = SQL & " 'DtMovvgg',"       'primo campo della primary key
SQL = SQL & " 'NuProMovvgg',"    'secondo campo della primary key"
SQL = SQL & " 'CoVocMovvgg'"     'terzo campo della primary key    
SQL = SQL & " ));"                                        
sqltable = DB_Connection.Exec(sql)
Message.Info("Tabella 'movimgg'  Creata - FINE PROVA ")

Ho  mandato in seecuzione il programma e finalmente ho potuto leggere il mio Messaggio di "Fine Prova", Non ho potuto fare a meno di  :evviva:

E visto che siamo arrivati alla vigilia di Natale, per me é stato un grandissimo regalo di "Babbo Natale  Gambas+SQLite3".

Ho voluto riportare il codice solamente perché possa essere d'aiuto a chi dovesse avere la mia stessa necessità ed, utilizzando i post come documentazione di supporto, possa arrivare molto comodamente alla soluzione.

Dimenticavo: ho aperto il DB con Knoda ed ho potuto riscontrare l'effettiva esistenza della tabella con tutti i campi, però devo ancora approfondirne la conoscenza per potere ottenere la vista della sua struttura.

Grazie per il sostegno. Buon Natale a tutti.
 :pint:  :ciao:  :ciao:
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #12 il: 27 Dicembre 2008, 11:43:08 »
Buon Natale anche a te e ai tuoi cari!

Comunque, c'è una cosina che non mi suona nel tuo codice, ovvero la definizione della PRIMARY KEY; nella dichiarazione hai inserito una serie di valori stringa costanti, ma la definizione vuole uno o più nomi di campo.
Spero tu sappia cos'è un indice, nel qual caso la chiave primaria intendila come tale, nel senso che questa implica la creazione di un normale indice, ma con le opzioni "Unique" e "Not Null" attive. In più, queste opzioni, non possono essere alterate, e questo di norma viene controllato dal motore del db.

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #13 il: 29 Dicembre 2008, 15:23:50 »
Citazione

md9327 ha scritto:
c'è una cosina che non mi suona nel tuo codice, ovvero la definizione della PRIMARY KEY; nella dichiarazione hai inserito una serie di valori stringa costanti, ma la definizione vuole uno o più nomi di campo.


Mi dispiace dirti di non aver compreso quello che vuoi dire, anche perché le stringhe a cui probabilmente ti riferisci servono a formare il comando SQL con cui GAMBAS costruisce la tabella DB la cui PRIMARY KEY é segnatamente riportata con l'elencazione dei nomi campo in coda a tutti i nomi dei campi tabella dove, invece, é riportata a fianco di ciascun campo la struttura del campo stesso, pertanto:
Citazione

Codice: [Seleziona]

sql = sql & " 'DtMovvgg' CHAR(8),"
SQL = SQL & " 'NuProMovvgg' INTEGER,"          
SQL = SQL & " 'CoVocMovvgg' CHAR(8),"          
SQL = SQL & " 'DescrMovvgg' VARCHAR(100) DEFAULT NULL,"
SQL = SQL & " 'MValMovvgg' CHAR(1) DEFAULT NULL,"        
SQL = SQL & " 'ImpMovvgg' FLOAT DEFAULT NULL,"
SQL = SQL & " 'BenefMovvgg' CHAR(1) DEFAULT NULL,"

é l'elenco dei campi costituenti la tabella, mentre:

Codice: [Seleziona]

SQL = SQL & "  PRIMARY KEY ("
SQL = SQL & " 'DtMovvgg',"       'primo campo della primary key
SQL = SQL & " 'NuProMovvgg',"    'secondo campo della primary key"
SQL = SQL & " 'CoVocMovvgg'"     'terzo campo della primary key    
SQL = SQL & " )

costituiscono  la referenza ai nomi dei campi che cumulativamente formano la PRIMARY KEY, sempre nello stesso comando SQL che inizia con :

sql = "CREATE TABLE 'Movimgg' ("

e finisce con:

...........);"  


L'esecuzione del programma poi non mi ha dato errore e la tabella é stata formata bene. Può darsi che la sintassi di Gambas preveda anche un 'altro tipo di struttura del comando SQL necessario a costruire una tabella. Io mi sono attenuto a quanto letto  in http://www.sqlite.org/lang.html.

Non ho potuto continuare le mie prove perché sto tentando di portare tutto il codice relativo alla costruzione del DB e di tutte le sue tabelle in una classe esterna a "FMain.class", da richiamare solo la prima volta che mando in esecuzione il programma e non ci riesco; le mie conoscenze in merito alle classi, ai moduli ed ai metodi sono veramente scarse e, non trovando una guida esplicativa in italiano che illustri elementarmente come riconoscere l'una dall'altra e come scriverne esattamente il codice per richianmare ora l'una, ora l'atra, in special modo la classe, sto incontrando grosse difficoltà, anche seguendo gli esempi nei programmi di prova trovati nel Forum.

Tornando al comando SQL di partenza, se ritieni che debbo correggere qualcosa nel codice scritto, sono qui pronto a sentire i tuoi consigli. :ciao:
:ciao:

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: primi approcci con sqlite3
« Risposta #14 il: 29 Dicembre 2008, 19:16:07 »
In effetti mi hanno confuso gli strani nomi che hai dato alle colonne, che ho scambiato per stringhe... :-)

No, il codice, dopo uno sguardo più attento, è corretto.

Per gli oggetti e le classi, ho scritto qualcosa nel Wiki...

Buon anno!!!