Autore Topic: Database mysql con gambas 3  (Letto 10760 volte)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #15 il: 06 Settembre 2010, 15:47:25 »
Appoggio cesko, al momento cercate di impostare il tutto sul piano più facile. Impostare MySQL porterebbe l'amico fuori di testa, e al momento deve solo iniziare a fare un qualcosa.
Riguardo alla procedura, sicuramente cesko ha detto bene, leggi prima qualcosa di sqlite, fai delle prove da riga di comando, magari usa l'ide sqlmanager per sqlite, così vedi cosa stai facendo, e lo fai con un minimo di controllo da parte del sistema. Alla fine, quando hai iniziato a capirci qualcosa, provi a rifarlo con gambas.
Parlare di progetti, al momento, è bene evitarlo, anche se possono essere un obiettivo.


Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #16 il: 06 Settembre 2010, 21:49:40 »
Scusate se sono stato insistente... :-[
Ho rifatto l'esempio con sqlite, è una semplice rubrica secondo me è giusta per incominciare a imparare

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #17 il: 06 Settembre 2010, 22:13:21 »
Ok, grazie a tutti, seguo il vostro consiglio e continuo con sqlite3.
Mi sono bloccato nuovamente nella fase di creazione della tabella che poi dovrà contenere gli elementi.
allora, ho scritto questo:
Codice: [Seleziona]
sql = "CREATE TABLE TextBox2.text('id' INTEGER PRIMARY KEY AUTOINCREMENTAL, 'nome' VARCHAR(255) Default Null, 'cognome' VARCHAR(255) DEFAULT NULL, 'indirizzo' VARCHAR(255) Default Null);"
  hTable = $Con.Exec(sql)
tutto preso dal manuale di fsurfing...
Ora non mi sono chiare due cose:
1)l'uso di htable dichiarato come result
2)come poi visualizzare il tutto in una gridview, ammesso che non debba più aggiungere altro...

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #18 il: 06 Settembre 2010, 22:23:35 »
L'uso di htable in effetti non serve.
Ti basta
Citazione
sql = "CREATE TABLE TextBox2.text('id' INTEGER PRIMARY KEY AUTOINCREMENTAL, 'nome' VARCHAR(255) Default Null, 'cognome' VARCHAR(255) DEFAULT NULL, 'indirizzo' VARCHAR(255) Default Null);"
$Con.Exec(sql)

Se posso consigliarti, scrivi così la query
Codice: gambas [Seleziona]

DIM sql AS String
      sql = "CREATE TABLE 'rubrica' ("
      sql &= " 'idrubrica' INTEGER PRIMARY KEY,"   
      sql &= " 'cognome' varchar(20) DEFAULT NULL,"
      sql &= " 'nome' varchar(20) DEFAULT NULL,"
      sql &= " 'indirizzo' varchar(30) DEFAULT NULL,"             
      sql &= " 'citta' varchar(30) DEFAULT NULL,"
      sql &= " 'provincia' varchar(20) DEFAULT NULL,"
      sql &= " 'telefono' varchar(10) DEFAULT NULL);"       
      $conn.EXEC(sql)

e per la tebella puoi mettere un nome semplice, non "TextBox2.tex" potrebbe crearti dei problemi. Inoltre anche i nomi dei campi cerca sempre di dargli un nome semplice senza caratteri speciali. Esempio ti conviene chiamare un campo "citta" e non "città"

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #19 il: 06 Settembre 2010, 22:38:31 »
effettivamente non serve per la creazione di un database indicare un result, è un vizio che mi è rimasto tra le dita da vecchie guide di quando utilizzavo gambas1 :)

tornando a noi, il consiglio di golia sulla formattazione della query è ottimo e ti permetterà di leggere bene ogni nuovo field che aggiungi nella tavola.
fai attenzione alla concatenazione delle stringhe , dal tuo codice mi sembra che tu volessi creare una tavola con il nome presente nella textbox , per cui non sarà come hai scritto tu:
Codice: gambas [Seleziona]
sql = "CREATE TABLE TextBox2.text('id' INTEGER PRIMARY KEY......

bensi
Codice: gambas [Seleziona]
sql = "CREATE TABLE " & TextBox2.text & "('id' INTEGER PRIMARY KEY......


prima di poter scrivere i dati nella gridvieW dovrai riempire il database. non mi ricordo se nella guida (è molto vecchia) è presente il codice per riempire una grid, ma sicurament eci sarà nell' esempio di golia , altrimenti faccelo sapere

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #20 il: 06 Settembre 2010, 23:02:17 »
Citazione
è un vizio che mi è rimasto tra le dita
:D anche a me succede, inoltre continuo a fare copia incolla così continuo a replicare :)
Non avevo capito che voleva utilizzare un textbox per dare il nome alla tabella.
Nel mio esempio è presente il codice per riempire la grid

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #21 il: 06 Settembre 2010, 23:22:23 »
noto ora che lux ha postato nella sezione relativa a gambas3, mi sembra di aver capito che per quanto riguarda sqlite non ci siano diversità tra g2 e g3, per mysql invece sembra sia stato creato un nuovo componente per questo db (mantenendo comunque i vecchi metodi) tutto da scoprire :)

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 416
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #22 il: 07 Settembre 2010, 15:37:53 »
Ho scritto in questo modo il mio codice in modo da poter inserire ciò che voglio nel database con dei textbox:
Codice: [Seleziona]
Dim sql As String
  Dim hTable As Result

  $Con.Name = $Name 'Mi connetto al database
  $Con.Open 'Apro il database per creare una tabella
  sql = "CREATE TABLE & TextBox2.text &("
  sql &= " 'id' INTEGER PRIMARY KEY AUTOINCREMENTAL,"
  sql &= " & TextBox3 varchar(255) DEFAULT NULL,"
  sql &= " & TextBox4 varchar(255) DEFAULT NULL,"
  sql &= " & TextBox5 varchar(255) DEFAULT NULL);"
  $Con.Exec(sql)
Ora però non ho capito come aggiungere oggetti nel database...
domanda: varchar può essere 1024 come il c oppure non può superare i 255 caratteri? A cosa serve "Default null"?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #23 il: 07 Settembre 2010, 19:17:18 »
direi che ti mancano ancora le basi sull' utilizzo delle stringhe concatenate, il codice è il seguente:
Codice: gambas [Seleziona]

Dim sql As String
  Dim hTable As Result

  $Con.Name = $Name 'Mi connetto al database
  $Con.Open 'Apro il database per creare una tabella
  sql = "CREATE TABLE & TextBox2.text &("
  sql &= " 'id' INTEGER PRIMARY KEY AUTOINCREMENTAL,"
  sql &= "  " & TextBox3 & " varchar(255) DEFAULT NULL,"
  sql &= "  " & TextBox4 & " varchar(255) DEFAULT NULL,"
  sql &= "  " & TextBox5 & " varchar(255) DEFAULT NULL);"
  $Con.Exec(sql)


sono molti mesi che non rileggo la mia guida ma mi sembra che fosse spiegato come inserire i dati all' interno del db! leggila per benino e non avere fretta

DEFAULT NULL indica al db che quel campo avrà come valore di default NULL (vuoto) quindi se tu ad esempio crei un nuovo record impostando solo il primo field , gli altri avranno valore NULL, se avessi scritto DEFAULT 'pippo' avrebbero avutoi come valore "pippo" , con varchar puoi inserire "testi" con un numero massimo di caratteri indicato dal valore tra parentesi


Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #24 il: 07 Settembre 2010, 23:42:50 »
Non mi ricordo se indispensabile, ma ci mancano anche gli appici
Codice: gambas [Seleziona]
sql &= "  '" & TextBox3 & "' varchar(255) DEFAULT NULL," 

Ho convertito l'sempio sqlite che avevo fatto 3 post prima in G3 senza problemi. Al momento per cose basilari non mi sembra che ci sia differenza tra G2 e G3

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #25 il: 08 Settembre 2010, 12:17:42 »
servono se il nome della tabella contiene spazi o caratteri poarticolari

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #26 il: 08 Settembre 2010, 13:52:40 »
cosa da evitare... è un consiglio!

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #27 il: 08 Settembre 2010, 23:44:35 »
Ciao, scusate l'intromissione, ma perchè usate la sintassi sql complessa e non i metodi di gambas?
la struttura:

Citazione
   1. Dim sql As String 
   2.  Dim hTable As Result 
   3.   
   4.  $Con.Name = $Name 'Mi connetto al database 
   5.  $Con.Open 'Apro il database per creare una tabella 
   6.  sql = "CREATE TABLE & TextBox2.text &(" 
   7.  sql &= " 'id' INTEGER PRIMARY KEY AUTOINCREMENTAL," 
   8.  sql &= "  " & TextBox3 & " varchar(255) DEFAULT NULL," 
   9.  sql &= "  " & TextBox4 & " varchar(255) DEFAULT NULL," 
  10.  sql &= "  " & TextBox5 & " varchar(255) DEFAULT NULL);" 
  11.  $Con.Exec(sql) 

non potrebbe essere?


Codice: [Seleziona]
dim myTable as Table
$Con.Name = $Name 'Mi connetto al database
$Con.Open 'Apro il database per creare una tabella

myTable = $Con.Tables.Add(TextBox2.Text)
with myTable
 .fields.Add("id", db.integer)
 .fields.add(TextBox3.text, db.string,255)
 .fields.add(TextBox4.Text,db.string,255)
 .fields.add(TextBox5.Text,db.string,255)
 .Update()
 .PrimaryKey=[id]
end with
$Con.Close()

L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #28 il: 08 Settembre 2010, 23:57:21 »
forse perchè non me la sono mai studiata  :-[
ti ringrazio per il codice :2birre:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Database mysql con gambas 3
« Risposta #29 il: 08 Settembre 2010, 23:59:29 »
nella programmazione , ma soprattutto in gambas vi sono molti modi per fare la stessa cosa :)

tempo fa utilizzavo sempre i metodi di gambas, poi sono passato all' sql  dopo aver riscontrato alcuni piccolissimi problemi e per il fatto che sul forum solitamente si parlava in "SQL", in realtà i due sistemi sono equivalenti , ma forse qualcuno più esperto di me nella programmazione potrà dare maggiori delucidazioni.
« Ultima modifica: 09 Settembre 2010, 00:17:28 da fsurfing »