Autore Topic: [RISOLTO] non e' un sqlite3 bug, ma era la home di un utente differente ...  (Letto 401 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
salve e bun giorno.

mi potreste testare questo codice?

Codice: [Seleziona]
Dim vConnessione As New Connection
Dim vPercorso As String ' variabile per il percorso in cui creare il db
Dim vDatabase As String ' variabile per il nome che diamo al database
Dim vTabella As Table
Dim vTabellaUno As String ' variabile per la creazione della tabella UNO e dei campi
Dim vRisultato As Result

  Dialog.Path = Settings["LastPlaylistFile", User.Home] & "Playlist_" & Format(Now, "yyyymmdd_hhnnss") & ".sqlite3"
 
  Dialog.Filter = ["*.sqlite;*.sqlite3", "sqlite format database files"]
  If Dialog.SaveFile() Then
    Return
  Endif

  'se siamo qui' allora abbiamo deciso di creare un nuovo file per la playlist

  If File.Ext(Dialog.Path) = "" Then
    Dialog.Path = Dialog.Path & ".sqlite3"
  Endif

  vPercorso = File.Dir(Dialog.Path) ' definisce il percorso del database
  vDatabase = File.Name(Dialog.Path) ' definisce il nome del database
 
  vTabellaUno = "CREATE TABLE 'PlaylistContent'" & ' nome della tabella e dei campi che si andrà a creare
                          "('id' INTEGER PRIMARY KEY," & ' chiave primaria
                          "'Time' VARCHAR(8) Default Null," &         'nome del campo, tipo e valore predefinito
                          "'Path' VARCHAR(55) Default Null," &
                          "'MediaType' VARCHAR(20) Default Null," &   'STATUS e' una proprieta' locale che viene definita al caricamento
                          "'lenght' VARCHAR(20) Default Null," &
                          "'WARN' VARCHAR(55) Default Null);"          'MEDIA e' una proprieta' locale che viene definita al caricamento
 
  If Exist(Dialog.Path) Then ' esiste il file della playlist, chiedo se cancellarlo o meno
    Select Case Message.Question("Do you want to overwrite playlist file?", "YES", "NO", "CANCEL")
        Case 2
          Return
        Case 3 'in ogni altro caso esco dalla procedura (verificare se devo comunque riscrivere STOP
          Return
      End Select
  End If
 
  'se siamo qui' vogliamo scrivere il file della playlist
 
  With vConnessione
  .Type = "sqlite3" ' indicazione del tipo di database da utilizzare
  .Host = vPercorso
  .Login = ""
  .Password = ""
  End With
 
  vConnessione.Open() ' apre la connessione
  If Not vConnessione.Databases.Exist(vDatabase) Then ' verifica che il db non esista già
  vConnessione.Databases.Add(vDatabase) ' crea il database
  vConnessione.Close() ' chiude la connessione

fino a pochi giorni fa mi funzionava .. ora non riesce a creare il database .....
« Ultima modifica: 29 Novembre 2017, 13:36:46 da allegfede »
se corri, morirai stanco (motto degli sniper)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:sqlite3 bug?
« Risposta #1 il: 27 Novembre 2017, 13:21:01 »
 :ciao:
...dopo aver attivato gb.db, gb.db.form e gb.settings (e per la verità aggiunto anche un endif che mancava), gira, chiede dove salvare il file, con quale nome e lo genera.
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:sqlite3 bug?
« Risposta #2 il: 27 Novembre 2017, 14:12:04 »
Come ha detto kicco, funziona anche qui.

Provato con GTK, QT4 e QT5.

 :ciao:

P.S. Naturalmente la tabella non la crea in quanto manca il codice per crearla e non ho capito perché ne hai allegato l'SQL, ma visto che lo hai allegato ti dico che per SQLite Varchar è inutile in quanto dietro le quinte per lui è sempre e solo text. (https://sqlite.org/faq.html risposta 9)
« Ultima modifica: 27 Novembre 2017, 14:27:52 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:sqlite3 bug?
« Risposta #3 il: 27 Novembre 2017, 18:47:37 »
e' un pezzo, prima dovrebbe creare il file/database e poi la tabella dentro .. a me dopo l'open da errore ....

la parte mancante e':
Codice: [Seleziona]
  vConnessione.Open() ' apre la connessione
  If Not vConnessione.Databases.Exist(vDatabase) Then ' verifica che il db non esista già
  vConnessione.Databases.Add(vDatabase) ' crea il database
  vConnessione.Close() ' chiude la connessione
  vConnessione.Name = vDatabase ' alla connessione assegna il nome del database
  vConnessione.Open() ' riapre la connessione
  vRisultato = vConnessione.Exec(vTabellaUno) ' aggiunge al database la tabella con i campi, come sopra definito
  Wait 1
    For i = 0 To GridView_Media.Rows.Count - 1
      'inserisci un nuovo record per ogni riga
      vRisultato = vConnessione.Create("PlaylistContent")
      vRisultato["id"] = i
      vRisultato["Time"] = GridView_Media[i, 0].Text
      vRisultato["Path"] = GridView_Media[i, 1].Text
      vRisultato["MediaType"] = GridView_Media[i, 2].Text
      vRisultato["lenght"] = GridView_Media[i, 4].Text
      vRisultato["WARN"] = GridView_Media[i, 5].Text
      vRisultato.Update
      vConnessione.Commit
    Next
  Endif
  vConnessione.Close() 'chiude la connessione

nel mio caso:
vpercorso="/home/allegfede"
vConnessione.host=vpercorso
vdatabase="test.sqlite3"
e DOVREBBE crearlo con:
vConnessione.Databases.Add(vDatabase)

ma mi dice:
cannot create database, unable to open the database file in FMain etc etc. ....

gambas 3.10.0
« Ultima modifica: 27 Novembre 2017, 18:54:51 da allegfede »
se corri, morirai stanco (motto degli sniper)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.158
  • Tonno verde
    • Mostra profilo
Re:sqlite3 bug?
« Risposta #4 il: 27 Novembre 2017, 23:35:16 »
Guarda non so cosa dirti, ti posto come più o meno lo farei io.
Non l'ho provato sappimi dire se funziona.

 :ciao:

P.S. C'era un errore:
For i = iMin To iMax invece di For i = iMin To iMax + iMin - 1
Speriamo sia il solo  ;D
« Ultima modifica: 27 Novembre 2017, 23:50:44 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:sqlite3 bug?
« Risposta #5 il: 29 Novembre 2017, 13:35:57 »
SONO UN DEFICIENTE .....

sul mio pc ci sono piu' utenti .... il dialog mi apriva per default la cartella /home perche' la sequente riga era sbagliata e puntava ad una directory inesistente:

Codice: [Seleziona]
 Dialog.Path = Settings["LastPlaylistFile", User.Home] & "Playlist_" & Format(Now, "yyyymmdd_hhnnss") & ".sqlite3"

quindi .... selezionavo di scrivere nella directory: /home/utente1 ma ero in esecuzione con l'utente2 .......

che deficiente ....... Scusate per la perdita di tempo ....

PS: andava aggiunte la / dopo user.home :D ovvero cosi':
Codice: [Seleziona]
 Dialog.Path = Settings["LastPlaylistFile", User.Home] & "/Playlist_" & Format(Now, "yyyymmdd_hhnnss") & ".sqlite3"
« Ultima modifica: 29 Novembre 2017, 13:40:30 da allegfede »
se corri, morirai stanco (motto degli sniper)