Italian creare una nuova tabella via codice con sql

3394509365

Active Member
Licensed User
Longtime User
Ciao a tutti ho un db con una tabella, vorrei via codice poter creare una nuova tabella nello stesso db.

Sql createtable esiste? come si usa? qualcuno ha un manuale delle istruzioni più comuni?

grazie
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Io personalmente preferisco fare tutto a mano, senza utilizzare altri moduli coi quali rischio di non avere il pieno controllo.
Ad esempio :
B4X:
dbProva.Initialize(File.DirRootExternal, GlobalCartellaOrario & "/" & GlobalNomeDataBase, True)
    dbProva.BeginTransaction
    Try
        dbProva.ExecNonQuery("DROP TABLE IF EXISTS TabOre")
        Criterio="CREATE TABLE [TabOre] ([ID] INTEGER NOT NULL,[Giorno] INTEGER NOT NULL, [Ora] INTEGER, [Materia] TEXT(50), [Classe] TEXT(50), [Docente] TEXT(50), [Sede] TEXT(50), [Tipo] TEXT(50), [Inizio] FLOAT, [Durata] FLOAT, [Compresenza] TEXT(1))"
       
        dbProva.ExecNonQuery(Criterio)
        dbProva.TransactionSuccessful
    Catch
        Log (LastException.Message)
    End Try
    dbProva.EndTransaction
 

LucaMs

Expert
Licensed User
Longtime User
Non hai il controllo se è una libreria compilata.

Essendo un modulo con codice, basta studiare quelle poche funzioni e magari aggiungerne delle proprie o modificarle a proprio piacimento.

Anche perché se scrivesse il codice come il tuo, errori possibili a parte (di digitazione, eh!), se deve crearne poi una seconda, che fa? Copia e incolla? :)


Cmq, in generale, ti capisco. I "precotti" a volte non sono sufficienti.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Io ho scritto "pieno" controllo. Difatti non credo che con dbUtils si possa scrivere qualcosa del genere
[OgniXSecondi] INT DEFAULT 30
e cosucce del genere. Le transazioni ad esempio sono gestite ?
Resto dell'idea che conoscere, fin da subito, l'SQL di SQLite non possa che aiutare a comprendere i meccanismi sottostanti ai moduli tipo dbUtils (che ha una sua utilità, ma solo per progetti limitati, direi prototipiali).
 

3394509365

Active Member
Licensed User
Longtime User
AlpVir, il tuo codice per creare la tabella mi funziona perfettamente ma finchè creo con i campi fissi tutto bene, se invece metto delle variabile per i campi cominciano i problemi.

questo è il mio codice della query stringa :
B4X:
Query = "CREATE TABLE [TabOre] ([ID] INTEGER NOT NULL)"      ' funzionante con campi fissi

Query = "CREATE TABLE " [TabOre] & "(" & GestioneTbl.ColNames(0) & ")" & INTEGER Not Null
' non funzionante con campo ID Variabile

questo è uno degli infiniti modi con cui ho provato

grazie
 
Last edited:

3394509365

Active Member
Licensed User
Longtime User
stavolta ce l' ho fatta da solo:

Posto la soluzione

B4X:
Query = "CREATE TABLE [TabOre2] " & "(" & GestioneTbl.ColNames(0) & " INTEGER NOT NULL" & ")"
 

3394509365

Active Member
Licensed User
Longtime User
Con basic4 3.20 c'è la possibilità di inserire un inputbox come in vb6 ??es. Per esempio quando si richiede una password ?
 

LucaMs

Expert
Licensed User
Longtime User
C'è la libreria Dialogs. Poi puoi cercare sul sito se hanno fatto qualcosa di specifico per il Login e, soprattutto, puoi crearti delle dialog da solo; per quest'ultimo cerca sul sito, sia io che altri abbiamo risposto molte volte.
 
Top