Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Lux - 11 Dicembre 2008, 10:15:02

Titolo: Uso di un database
Inserito da: Lux - 11 Dicembre 2008, 10:15:02
Ciao a tutti, avrei bisogno, ancora una volta, del vostro aiuto.
Vorrei cominciare a capire cos'è e come funziona un database.
Le mie conoscenze in materia sono molto scarse, so soltanto che è un elenco di dati e il più delle volte ho creato semplicissime cose con access di microsoft.
Vorrei poter creare qualcosa che funzioni utilizzando solo gambas ma non ho capito come fare. Devo creare un file di testo con un elenco e poi farlo leggere?
Come potete capire le mie conoscenze in materia sono praticamente ugualia zero. Potete consigliarmi qualcosa su cui studiare?
Ciao a tutti!
Titolo: Re: Uso di un database
Inserito da: Phoenix - 11 Dicembre 2008, 11:34:16
Prova ad iniziare da qui http://database.html.it/guide/leggi/87/guida-mysql/ e poi inizia a vedere in libreria se trovi un buon manuale.

Mysql lo utilizzavo con PHP e ora lo sto provando con gambas.
Per potermi connettere ad esso uso un modulo salvato nella cartella 'Moduli' chiamato MODMain. Questo è un estratto...

' Gambas module file
PUBLIC $conn AS NEW Connection

PUBLIC PROCEDURE Connect()
 
  $conn.Close()             'chiude la connessione
  $conn.Type = "mysql"      'tipo di connessione
  $conn.Host = "localhost"  'nome del server
  $conn.Login = "root"        'username della connessione
  $conn.port = "3306"          'porta utilizzata dal database
  $conn.Name = "database"   'nome del database da utilizzare
  $conn.Password = "password-root"  'password di accesso
  $conn.Open()              'apre la connessione
 
END

PUBLIC SUB Main()
 
  Connect() 'avvia la procedura per la connessione
 
END

Quando devo connettermi da qualsiasi parte del programma utilizzo:

MODMain.Connect()
risultato = MODMain.$conn.Exec("select id from tabella)

per scrivere l'id che ne è uscito

PRINT "ID = " & risultato!id

E' da pochissimo che lo uso e quindi prendilo come punto di inizio, qualcuno saprà sicuramente fare di meglio.
Titolo: Re: Uso di un database
Inserito da: fsurfing - 11 Dicembre 2008, 19:21:18
utilizzare mysql come db per una semplice applicazione mi sembra esagerato

se non hai necessita di realizzare un applicazione client-server ti consiglio di usare sqlite3 come db molto + semplice anche se con qualche funzione in meno rispetto a mysql.

ti posto un programmino di esempio su utilizzo dei db sqlite
Titolo: Re: Uso di un database
Inserito da: Lux - 12 Dicembre 2008, 11:45:39
Ok, opterò per sqlite3 visto che è più semplice....mi sapreste anche indicare un manuale su cui poter studiare?
ciao e grazie.
Titolo: Re: Uso di un database
Inserito da: fsurfing - 12 Dicembre 2008, 12:28:06
l' utilizzo di sqlite con gambas è talmente semplice ed immediato che in realta potrebbe non servire affatto conoscere il funzionamento di sqlite e meppure un manuale.

infatti l' oggetto gb.db fornisce tutti gli strumenti per gestirlo

poi volendo con il metodo .exec puoi invece gestire il db tramite le query SQL.

ti consiglio di guardare gli esempi di gambas sui db e il programmino che ti ho postato prima e poi di provare a fare un semplice programmino.

poi se hai dei dubbi specifici chiedi qui nel forum

se vuoi sapere la sintassi dei comando SQLITE guarda qui:

sintassi SQLITE (http://www.sqlite.org/lang.html)
Titolo: Re: Uso di un database
Inserito da: Lux - 12 Dicembre 2008, 12:51:38
Ok, grazie mille! il punto è che di database non capisco un tubo, sono abituato a crearne uno con access quindi avvio il programma e clicco nel campo per inserire i dati....Quindi dovrei fare tutto con gambas, giusto? perchè io ho installato sqlite3 dai repo di debian....comunque studio e ti faccio sapere
Ciao.
Titolo: Re: Uso di un database
Inserito da: fsurfing - 12 Dicembre 2008, 13:12:09
perfetto buon lavoro! :-o

PS: io trovo molto utile quando si fanno prove di utilizzo di db verificare la corretta struttura del db creato o la correttezza dei dati inseriti aprendo il db con un programma di gestione database, per sqlite utilizzo sqlitebrowser (lo trovi nei repo) che è semplice veloce e non "inquina la struttura del db".....
e neppure l' ambiente!

  :-P
Titolo: Re: Uso di un database
Inserito da: Lux - 17 Dicembre 2008, 19:37:05
Raga, anche se so di poter fare la figura del fesso, io confesso che non ho capito manco da dove devo cominciare. :cry:
Io devo fare questo: creare un programma in gambas che mi consente di inserire dati, cancellarli, catalogarli....Dove posso studiare? Ho trovato la documentazione di sqlite 3 che è in inglese(lo capisco ma mi rallanta) niente in italiano? e dove posso studiare per usare gambas con sqlite....Panico totale...
Titolo: Re: Uso di un database
Inserito da: fsurfing - 17 Dicembre 2008, 20:13:48
non devi studiare devi provare a scrivere codice!

cmq hai guardato il programma che ti ho postato?

poi leggi anche qui http://www.gambas-it.org/gmbs/modules/newbb/viewtopic.php?topic_id=378&start=10 (http://www.gambas-it.org/gmbs/modules/newbb/viewtopic.php?topic_id=378&start=10)

:)
Titolo: Re: Uso di un database
Inserito da: Lux - 18 Dicembre 2008, 11:04:11
mmm, si ho guardato il programma ma non ho capito molto..... :cry:
Darò un occhiata al link che mi hai inviato!
Provare a scrivere codice? e che scrivo?
ciao e grazie mille per l'aiuto! :-D
Titolo: Re: Uso di un database
Inserito da: md9327 - 18 Dicembre 2008, 14:32:52
Bè, qualche esempiuccio è incluso nell'installazione di gambas, puoi iniziare da quello, poi in questo forum c'è qualche altra cosetta in merito...
Riguardo ai comandi SQL, puoi iniziare a dare un'occhiata nelle guide di HTML.it...
Titolo: Re: Uso di un database
Inserito da: andy60 - 18 Dicembre 2008, 21:35:27
per costruire software con Gambas IMHO penso che il backend che offre il compromesso migliore sia sqlite3, anche se mysql e postgres offrono soluzioni di elevato livello enterprise, quindi prosegui con sqlite...Buone Feste a tutti
Titolo: Re: Uso di un database
Inserito da: Lux - 19 Dicembre 2008, 18:24:44
Raga, allora ho visto gli esempi, il pdf che mi avete gentilmente postato,forse sarò scemo io, ma proprio non ci riesco! Cosa vuol dire $hConn? Perchè ci sono l'$ e l'h ?
uffa..........................
Titolo: Re: Uso di un database
Inserito da: fsurfing - 19 Dicembre 2008, 20:11:12
quello è solo un nome di variabile

poteva essere anche così:


dim pippo as new Connection


pippo.open


ecc ecc

:)
Titolo: Re: Uso di un database
Inserito da: md9327 - 20 Dicembre 2008, 01:14:40
Il carattere "$" di norma viene usato per identificare variabili "private", e deriva in particolare dalla vecchia sintassi Basic.
Non è una regola imperativa, ma rende più leggibile il codice, ed evidenzia meglio la logica.

Ad ogni modo, non ho letto gli esempi che gentilmente ti hanno inviato, ma il mio consiglio è di focalizzare più sui consigli e le idee e poi, provandole e modificandole, ti accorgerai di cosa si può fare e cosa no, cosa rende meglio e cosa un pò meno.

... spero di aver reso l'idea... :-)
Titolo: Re: Uso di un database
Inserito da: leo72 - 20 Dicembre 2008, 06:46:56
[OT]
Dipende da che Basic:-;
Sui Basic Commodore il $ identificava le variabili di tipo stringa. A era un numero, A$ era una stringa.

Sul Gw-Basic mi pare fosse ancora così.
[/OT]
Titolo: Re: Uso di un database
Inserito da: Lux - 20 Dicembre 2008, 11:45:59
Raga siete gentilissimi come al solito! :-D Quindi il simbolo $ in questo caso non ha nessun significato, giusto?
Ora, perdonatemi ma ho altre domandine, una fuori tema : quando creo una parte di codice ho notato che posso scrivere : Public Sub e private sub, se non erro, cosa vuol dire?
Tornando invece ai database, allora partiamo da zero. allora nel mio form ho inserito un Datasource e poi un Dataview, il primo deve servirmi per aprire il database, giusto? Mentre il secondo visualizza i dati.
Ora tornando quindi al codice io scrivo:
Codice: [Seleziona]
PUBLIC SUB Form_Open()
DIM Database AS String
DIM Percorso AS String
DIM Connessione AS NEW Connection
Database = "Productlist" è il nome del mio database
Percorso = User.Home è il posto in cui si trova


Codice: [Seleziona]
WITH Connessione          Questa parte l'ho presa da un esempio ma non mi è chiara
     .Type = "sqlite3"  tipo di database
     .Host = Percorso  
END WITH


Qui mi blocco, ora io il database non lo ho, lo vorrei creare sempre con gambas e poi poterlo aggiornare ogni volta che mi serve.
Ho pescato questo codice sempre dal pdf:
Codice: [Seleziona]
 sql = "CREATE TABLE 'biblio' ( 'id' INTEGER PRIMARY KEY, 'nome' VARCHAR(255)" DEFAULT NULL, 'cognome' VARCHAR(255) DEFAULT NULL, 'indirizzo' VARCHAR(255) DEFAULT NULL); ""    hTable = $hConn.EXEC(sql)

e non ho capito bene, dice sql? ma io non uso sqlite3? perdonate ma proprio sono a pane e acqua!
il 255 indica il numero di caratteri massimi, giusto? che sarebbe 2 all'ottava, giusto? o ricordo male?
Ok, per ora mi sembra d'aver finito, ma ci risentiremo presto!
ciao e grazie!
Titolo: Re: Uso di un database
Inserito da: fsurfing - 20 Dicembre 2008, 14:50:50
anche in questo caso sql è una variabile di tipo stringa, non hai visto che è stata dichiarata con :

DIM sql AS string

nel contesto in cui l' hai presa sql contiene la query per la creazione del db, è stata utilizzata questa variabile solo per rendere + leggibile il codice (o forse no?)
il comando che ti crea il db è questo:

tavola=connessione.exec(sql)


che si puo anche scrivere cosi senza usare la variabile:
Codice: [Seleziona]

tavola=connessione.exec( "CREATE TABLE 'biblio' ( 'id' INTEGER PRIMARY KEY, 'nome' VARCHAR(255)" DEFAULT NULL, 'cognome' VARCHAR(255) DEFAULT NULL, 'indirizzo' VARCHAR(255) DEFAULT NULL); ")




dove tavola è una variabile di tipo "result" che avrai dichiarato all' inizio della funzione con  

DIM tavola as result
Titolo: Re: Uso di un database
Inserito da: fsurfing - 20 Dicembre 2008, 14:54:01
Citazione
il 255 indica il numero di caratteri massimi, giusto? che sarebbe 2 all'ottava



si 255 indica il numero massimo di caratteri che il campo può contenere , pui mettere qualsiasi valore dipende da cosa devi memorizzare
Titolo: Re: Uso di un database
Inserito da: Lux - 20 Dicembre 2008, 16:23:35
Ok, grazie mille. Un'altra cosa, il codice:
Codice: [Seleziona]
tavola=connessione.exec
è la connessione al database o la creazione? Nel senso tavola è il nome del database da creare?
se volessi creare un database diversamente da come l'hai creato tu, aggiungendo dei nomi diversi ma facendolo magari inserendoli in un textbox e non direttamente dal codice, perchè ora non so quanti campi mi occorrono come posso fare?
Ciao e grazie mille per l'aiuto!
Titolo: Re: Uso di un database
Inserito da: leo72 - 20 Dicembre 2008, 23:19:44
Il metodo Exec() significa Execute, cioè Esecuzione: impartisce al DB di eseguire la query SQL.
Ad esempio:
Codice: [Seleziona]

Risultato = Connessione.Exec("SELECT * FROM tabella WHERE tipo = &1", "tipo_a")

Si impartisce al DB di selezionare dalla tabella "tabella" tutti i record il cui campo "tipo" sia uguale a "tipo_a".
E' lo stesso di Connessione.Find("tabella", "tipo=&1","tipo_a").

Spesso però si utilizza una query pura invece che dei metodi di Gambas perché magari dobbiamo eseguire delle operazioni un po' complesse.