RISOLTO Java e DataBase

Stato
Discussione chiusa ad ulteriori risposte.

petrusic

Utente Attivo
227
20
CPU
AMD Athlon - X86_64
Scheda Madre
Acer RS780HVF
HDD
SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
RAM
n.2 DDR" per 2GB
OS
fedora 28 Mate, Ubuntu Mate, Linux Mint 19
Riprendo la discussione perchè, dopo essere andato un pò avanti, mi sono dovuto fermare per errori di compilazione di origine sintattica.
Il mio costruendo programma richiama una classe esterna per la gestione di DataBase SQLite. Apre la connessione e poi comanda una query alla classe che gestisce il DB, facendosi restituire il ResultSet. Per ottenere ciò, ho scritto il passo seguente:
Codice:
conn = new GestDB();   
        risult = conn.connesso;
        if (!risult) {
             System.out.println("connessione del DB.-- " + conn.dbConn + " -- non riuscita");
             return;
        }
        else {
            try {
                sql = "SELECT * FROM piancont ORDER BY NumVoce";
                recPiancont = new GestDB.letDB(sql);
                while(recPiancont.next()) {
                    coVoce = recPiancont.getInt("NumVoce");
                    if ((coVoce >= 101000000)&&(coVoce <= 101999999)) {
                        if (swTbMov != "movimg") {        // testa la lettura del primo conto dei conti di Cassa
                            deDtUltMov = 0;
                            swTbMov = "movimg";
                        }
                    }
Allego la classe GestDb, per completezza di collegamenti fra il metodo chiamante e quello chiamato. spero che mi possiate aiutare a capire gli errori che commetto, visibili nel seguente codice:
Codice:
petrus@petrus-Aspire-M1200-3200-5200:/media/dirdati/dativari/java_vari/java_progetti_miei$ javac aggUltUsoPiacont/AggUltUsoPiacon.java
./aggUltUsoPiacont/GestDB.java:47: error: cannot find symbol
    public ResultSet letDB(String sql) {           // Esegue una query di lettura dati su tutto il Database
           ^
  symbol:   class ResultSet
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:59: error: cannot find symbol
    public Vector letRecDB(String sql){           // Esegue query di lettura sul DB di record filtrati dall'attributo WHERE
           ^
  symbol:   class Vector
  location: class GestDB
aggUltUsoPiacont/AggUltUsoPiacon.java:53: error: cannot find symbol
                recPiancont = new GestDB.letDB(sql);
                ^
  symbol:   variable recPiancont
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:53: error: cannot find symbol
                recPiancont = new GestDB.letDB(sql);
                                        ^
  symbol:   class letDB
  location: class GestDB
aggUltUsoPiacont/AggUltUsoPiacon.java:54: error: cannot find symbol
                while(recPiancont.next()) {
                      ^
  symbol:   variable recPiancont
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:55: error: cannot find symbol
                    coVoce = recPiancont.getInt("NumVoce");
                             ^
  symbol:   variable recPiancont
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:58: error: cannot find symbol
                            deDtUltMov = 0;
                            ^
  symbol:   variable deDtUltMov
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:78: error: cannot find symbol
                                Vector tb;
                                ^
  symbol:   class Vector
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:79: error: cannot find symbol
                                recMovimgg = new GestDB.letRecDB(sql);
                                ^
  symbol:   variable recMovimgg
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:79: error: cannot find symbol
                                recMovimgg = new GestDB.letRecDB(sql);
                                                       ^
  symbol:   class letRecDB
  location: class GestDB
aggUltUsoPiacont/AggUltUsoPiacon.java:87: error: cannot find symbol
                                ResultSet recPremom = stmt.executeQuery("SELECT DtCoUltPrestMom from prestmom  WHERE CoVoPrestMom = " + coVoce + " ORDER BY DtCoUltPrestMom desc");
                                                      ^
  symbol:   variable stmt
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:92: error: cannot find symbol
                                ResultSet recPartmov = stmt.executeQuery("SELECT DtCoPartGlob from partmovv  WHERE CoVoPartGlob = " + coVoce + " ORDER BY DtCoPartGlob desc");
                                                       ^
  symbol:   variable stmt
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:123: error: cannot find symbol
                chiu = new chiuConn();
                ^
  symbol:   variable chiu
  location: class AggUltUsoPiacon
aggUltUsoPiacont/AggUltUsoPiacon.java:123: error: cannot find symbol
                chiu = new chiuConn();
                           ^
  symbol:   class chiuConn
  location: class AggUltUsoPiacon
./aggUltUsoPiacont/GestDB.java:28: error: cannot find symbol
            erroDB =  e.getMessage();
            ^
  symbol:   variable erroDB
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:42: error: cannot find symbol
            erroDB =  e.getMessage();
            ^
  symbol:   variable erroDB
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:49: error: cannot find symbol
            Connection conn = getConnection();
                              ^
  symbol:   method getConnection()
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:50: error: cannot find symbol
             Statement  stmt = conn.createStatement();
             ^
  symbol:   class Statement
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:51: error: cannot find symbol
             return rsReader(stmt.executeQuery(getQuery("lista_persone")));
                                               ^
  symbol:   method getQuery(String)
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:55: error: cannot find symbol
            erroDB = e.getMessage();
            ^
  symbol:   variable erroDB
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:61: error: cannot find symbol
        v = new Vector();
        ^
  symbol:   variable v
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:61: error: cannot find symbol
        v = new Vector();
                ^
  symbol:   class Vector
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:64: error: cannot find symbol
            Connection conn = getConnection();
                              ^
  symbol:   method getConnection()
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:65: error: cannot find symbol
            Statement  stmt = conn.createStatement();
            ^
  symbol:   class Statement
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:66: error: cannot find symbol
            ResultSet rs = stmt.executeQuery(sql);
            ^
  symbol:   class ResultSet
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:67: error: cannot find symbol
            ResultSetMediaData rsmd = rs.getMetaData();
            ^
  symbol:   class ResultSetMediaData
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:69: error: cannot find symbol
            for (i = 1; i <numCol; i++) {
                 ^
  symbol:   variable i
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:69: error: cannot find symbol
            for (i = 1; i <numCol; i++) {
                        ^
  symbol:   variable i
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:69: error: cannot find symbol
            for (i = 1; i <numCol; i++) {
                                   ^
  symbol:   variable i
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:70: error: cannot find symbol
                String typeCol = rsmd.getColumnTypeName(i);    // legge il Tipo di dato della colonna corrispondente al valore indice “i”select
                                                        ^
  symbol:   variable i
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:73: error: cannot find symbol
                System.out.println("typeCol("+i+")= |"+colType+"|");
                                              ^
  symbol:   variable i
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:73: error: cannot find symbol
                System.out.println("typeCol("+i+")= |"+colType+"|");
                                                       ^
  symbol:   variable colType
  location: class GestDB
./aggUltUsoPiacont/GestDB.java:82: error: cannot find symbol
             erroDB = e.getMessage();
             ^
  symbol:   variable erroDB
  location: class GestDB
33 errors
 

Allegati

  • GestDB.txt
    2.7 KB · Visualizzazioni: 51
  • AggUltUsoPiacon.txt
    6.8 KB · Visualizzazioni: 66

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,210
1,846
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
I vari "cannot find symbol" indicano che non stai importando la classe che utilizzi.
Ad esempio: letDB() restituisce un ResultSet, ma non viene importato.

Ho visto quello che reputo un errore importante, e mi focalizzo su queseto (quando avrai fixato gli import, guardo anche altro): importi ArrayList e non Vector (è sempre un altro cannot find), ma a parte questo... utilizzi Vector e ArrayList.
Se da un punto di vista sintattico non è cambiato qualcosa con le ultime versioni, Vector e tutte le classi del Collection Frameworks, utilizzano i Generics.

Ho visto un altro problema:

Java:
        v = new Vector();
        ArrayList v = new ArrayList();

anche questo è sicuramente un errore in quanto 'v' la prima volta non esiste; inoltre se esistesse verrebbe sovrascritto dall'ArrayList (ma suppongo sia stato solo un errore di distrazione questo).
 

petrusic

Utente Attivo
227
20
CPU
AMD Athlon - X86_64
Scheda Madre
Acer RS780HVF
HDD
SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
RAM
n.2 DDR" per 2GB
OS
fedora 28 Mate, Ubuntu Mate, Linux Mint 19
I vari "cannot find symbol" indicano che non stai importando la classe che
Ho visto un altro problema:

Java:
        v = new Vector();
        ArrayList v = new ArrayList();

anche questo è sicuramente un errore in quanto 'v' la prima volta non esiste; inoltre se esistesse verrebbe sovrascritto dall'ArrayList (ma suppongo sia stato solo un errore di distrazione questo).

Diciamo che mi sono ingarbugliato nei ragionamenti, perchè basterebbe restituire un vettore con tutte le caselle desiderate dal chiamante, però ho il problema che trasferire in ciascuna casella del vettore il dato correttamente, non trascurando pertanto il suo type. Avevo pensato così alla classe ArrayList. Ho scoperto infine che posso interrogare il type di una casella del ResultSetMediaData:
Codice:
for (i = 1; i <numCol; i++) {
                String typeCol = rsmd.getColumnTypeName(i);    // legge il Tipo di dato della colonna corrispondente al valore indice “i”select
                System.out.println("typeCol("+i+")= |"+colType+"|");
            }
Quindi, ho pensato di tralasciare l'ArrayList, ma non mi sono curato di andare a ricorreggere tutto il codice che lo riguardava., Penso di essere un pò impantanato. Vorrei pertanto studiare qualcosa che riguradi il trattamento di DataBase in Java, ma non ho ancora trovato niente. Sono sul punto di acquistare "Java 11. Guida allo sviluppo in ambienti Windows, macOS e GNU/Linux" di Pellegrino Principe, ma temo che quello che cerco io sui DataBase non vi sia contenuto.
Ho fatto una prima correzione seguendo i tuoi consigli e gli errori si sono ridotti a 31.
 

petrusic

Utente Attivo
227
20
CPU
AMD Athlon - X86_64
Scheda Madre
Acer RS780HVF
HDD
SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
RAM
n.2 DDR" per 2GB
OS
fedora 28 Mate, Ubuntu Mate, Linux Mint 19
Ieri, cercando una soluzione alle mie problematiche di carattere sintattico che non mi permettono ancora di compilare senza errori il mio programmino, ho trovato in qui un consiglio sulla connessione attiva e sul passaggio di tutto il ResultSet al chiamante:
e' buona norma creare (o meglio, richiedere) la Connection ogni
qualvolta si ha bisogno di eseguire una query, e chiuderla subito dopo.
In situazioni normali un metodo public non dovrebbe mai ritornare un
ResultSet, ma semmai una tua struttura dati contenente le informazioni
estrapolate dal ResultSet.
Se tutto ciò può essere ancora valido, la mia impostazione nella gestione di DB viene stravolta ed ho necessità di capire anche come posso fare ad estrapolare tutte le informazioni del ResultSet. e passarle al chiamante senza appesantire sia la memoria occorrente che i tempi di esecuzione della query, considerando non solo la query in se stessa, ma anche il tempo necessario a caricare in un'apposita area l'intero risultato della query.
Forse non vale la pena di fare gestire le query ad una classe specializzata.
 

petrusic

Utente Attivo
227
20
CPU
AMD Athlon - X86_64
Scheda Madre
Acer RS780HVF
HDD
SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
RAM
n.2 DDR" per 2GB
OS
fedora 28 Mate, Ubuntu Mate, Linux Mint 19
:luxhello:
Finalmente sono riuscito ad eliminare tutti gli errori di precompilazione e la compilazione è stata completata.
Ho anche lanciato il programma che però non ha funzionato:
Codice:
petrus@petrus-Aspire-M1200-3200-5200:/media/dirdati/dativari/java_vari/java_progetti_miei$ javac aggUltUsoPiacont/AggUltUsoPiacon.java
petrus@petrus-Aspire-M1200-3200-5200:/media/dirdati/dativari/java_vari/java_progetti_miei$ java aggUltUsoPiacont/AggUltUsoPiacon

------ aggUltUsoPiacont ------
il  programma cerca per ciascuna voca contabile elementare
il record con data contabile più recente nella corrispondente
tabella movimgg o partmovv o prestmonm e trascrive detta data
nel record corrente di piancon e di quelli di ordine suoeriore,
qualora non riportino già una data di ultimo utilizzo, ancora
più recente
---------------------------------------------------------------
java.sql.SQLException: No suitable driver found for jdbc:sqlite:/media/dirdati/dativari/contabfam/Contabfamdb
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)
    at aggUltUsoPiacont.GestDB.<init>(GestDB.java:29)
    at aggUltUsoPiacont.AggUltUsoPiacon.main(AggUltUsoPiacon.java:47)
connessione del DB.-- jdbc:sqlite:/media/dirdati/dativari/contabfam/Contabfamdb -- non riuscita
Non capisco perchè non sia riuscita l'apertutra della connessione. Il percorso fino al database "Contabfamdb" è corretto. Che cosa ho sbagliato?
Allego il file GestDB.
 

Allegati

  • GestDB.txt
    3 KB · Visualizzazioni: 52

BAT

Moderatore
Staff Forum
Utente Èlite
22,668
11,452
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Secondo me hai dimenticato di registrare (nuovamente) il driver di database prima di aprire la nuova connessione;
non capisco però perché chiudere la connessione per ogni singola query, se occorre farne molte una dietro l'altra il tutto sarà inefficiente (a mia memoria la creazione della connessione era un lavoro computazionalmente dispendioso rispetto al resto).
A meno che il consiglio non venga da un esperto del campo, io la connessione la terrei aperta fine alla fine delle query.
 

petrusic

Utente Attivo
227
20
CPU
AMD Athlon - X86_64
Scheda Madre
Acer RS780HVF
HDD
SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
RAM
n.2 DDR" per 2GB
OS
fedora 28 Mate, Ubuntu Mate, Linux Mint 19
Secondo me hai dimenticato di registrare (nuovamente) il driver di database prima di aprire la nuova connessione;
Al piacere di risentirti BAT00cent.
Quello che mi succede avviene all'avvio del programma ed alla sua prima richiesta di connessione al jdbc. Allego anche il file del chiamante.
non capisco però perché chiudere la connessione per ogni singola query, se occorre farne molte una dietro l'altra il tutto sarà inefficiente (a mia memoria la creazione della connessione era un lavoro computazionalmente dispendioso rispetto al resto).
A meno che il consiglio non venga da un esperto del campo, io la connessione la terrei aperta fine alla fine delle query.
Anch'io la penso così, ma come ho riportato qui, viene consigliato di chiudere ad ogni query la connessione per riaprirla alla successiva necessità.
In ogni caso il programma che vorrei portare in porto, se mai ci riuscirò, dovrà essere ancora rivisto e modificato, quindi ci sarà modo di modellarlo opportunamente.
L'eccezione che viene sollevata, come avrai certamente visto, riguarda i codici di errore 702 e 251 della classe DriverManager.java che non so interpretare. A me, la riga incriminata della classe GestDB
Codice:
public String dbConn = "/media/dirdati/dativari/contabfam/ContabFamdb";  
conn = DriverManager.getConnection("jdbc:sqlite:" + dbConn);           //riga n. 30
sembra corretta, ma evidentemente non lo è.
Ho guardato i permessi d'accesso al DB e non ci sono limitazioni; ho guardato cento volte tutto il percorso segnato ed è corretto; ho guardato, per quel poco che ne capisco, il costrutto anteposto al percorso e mi sembra che abbia applicato quello corretto per l'ambiente Linux.
 

Allegati

  • AggUltUsoPiacon.txt
    6.8 KB · Visualizzazioni: 49

BAT

Moderatore
Staff Forum
Utente Èlite
22,668
11,452
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Leggevo la discussione (di 12 anni fa) che hai linkato; è vero che c'è scritto di chiudere la connessione ma, nella replica immediatamente successiva invece c'è scritta una cosa diversa: la stessa connessione si può tranquillamente usare per più query, al più prima eventualmente trasferisici i risultati del ResultSet su una struttura dati (aggiungo io: ammesso e non concesso che sia conveniente farlo, visto che potenzialmente possono essere quantità enormi di dati), poi al limite chiudi prima il ResultSet e poi lo Statement

Stavo leggendo il codice ma qualcosa non mi torna; vedo un metodo letRecDB dove c'è un ArrayList ma ritorni un Vector, un metodo chiudiConn dove chidi una connessione con l'istruzione conn.close() ma subito dopo metti una variabile connesso a true... mi pare poco lineare o forse qualcosa mi sfugge.
 

petrusic

Utente Attivo
227
20
CPU
AMD Athlon - X86_64
Scheda Madre
Acer RS780HVF
HDD
SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
RAM
n.2 DDR" per 2GB
OS
fedora 28 Mate, Ubuntu Mate, Linux Mint 19
Scusa Bat00cent, ma il mio problema attuale è aprire la connessione che è ciò che non funziona.
Il resto, riguardante lo scorrimento record nelle query e la chiusura della connessione stessa sono tutte attività scritte da inesperto e sono ancora incomplete, tanto che in certa parte del programma, per ridurre gli errori di compilazione, ho preferito, in questo momento, trasformare alcune righe di codice in commenti. Successivamente devono essere sicuramente riviste, corrette e limate per fare funzionare bene il programma, per cui, in questo momento sono da trascurare. Io ho allegato i due file componenti il programma per permettere a chi mi volesse aiutare a leggere la chiamata del costruttore della classe esterna con la relativa apertura della connessione, senza la quale non è possibile andare avanti.
In conclusione, soffermiamoci sulla getconnection.
Hai trovato qualche imperfezione nella stringa d'avvio della connessione (riga 30 della classe GestDB)?
:)
 

Moffetta88

Moderatore
Staff Forum
Utente Èlite
20,465
12,882
CPU
i5-4690
Dissipatore
DEEPCOOL CAPTAIN 240EX
Scheda Madre
MSI Z97 U3 PLUS
HDD
KINGSTON SSD KC400 240GB
RAM
24GB BALLISTIX SPORT @2133MHz
GPU
STRIX GTX980 DC2OC
Audio
INTEGRATA
Monitor
AOC G2590VXQ
PSU
BEQUIET! System Power 7 500W
Case
DEEPCOOL MATREXX 55
Periferiche
NESSUNA
Net
EOLO 100
OS
UBUNTU/WINDOWS11
Domanda, che tipo di database stai usando?
In che cartella è situato il database?
Quale versione del driver sqlite stai usando?
Come l'hai importato? Classica libreria o maven?

Java:
public boolean connesso = false;

    public String dbConn = "jdbc:sqlite:/media/dirdati/dativari/contabfam/Contabfamdb";
    public String erroDB;
    public Vector v;
    private Connection conn = null;

//------------------------------------------------------------------------------------------------------------
    public GestDB() {    // Modulo costruttore
//--------------------------------------- variabili locali ---------------------------------------------
        int numCol;
        String erroConn;
        try {
            /* AGGIUNGI QUESTO */
            Class.forName("org.sqlite.JDBC");
            conn=DriverManager.getConnection(dbConn);
            connesso = true;
        }
        catch(SQLException e) {  // visualizzo il messaggio di errore logico relativo al database
            connesso = false;
            erroDB =  e.getMessage();
            e.printStackTrace();    // metodo che spiega in dettaglio cosa è successo ed in quale punto del codice
//            System.out.println(e.getMessage());
        }   
    }
 
  • Mi piace
Reazioni: BAT

BAT

Moderatore
Staff Forum
Utente Èlite
22,668
11,452
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Concordo,
nell'altro post che ho scritto supponevo (senza aver letto il codice) che mancasse la registrazione del driver db, invece manca l'istruzione di caricamento Class.forName
Modificherei anche un'altra cosa: invece di creare un nuovo oggetto GestDB, potrebbe scrivere direttamente dei metodi statici di utilità per restituire connessione, resultset ecc.
 

petrusic

Utente Attivo
227
20
CPU
AMD Athlon - X86_64
Scheda Madre
Acer RS780HVF
HDD
SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
RAM
n.2 DDR" per 2GB
OS
fedora 28 Mate, Ubuntu Mate, Linux Mint 19
Domanda, che tipo di database stai usando?
É un database SQLite3 che ho creato e popolato e che alimento giornalmnete con un mio programma in Gambas3.
In che cartella è situato il database?
Codice:
ls -l /media/dirdati/dativari/contabfam/ContabFamdb
-rwxrwxrwx. 1 petrus petrus 9342976 giu  1 21:40 /media/dirdati/dativari/contabfam/ContabFamdb
Quale versione del driver sqlite stai usando?
Come l'hai importato? Classica libreria o maven?
Codice:
$ locate jdbc
/home/petrus/.local/share/Trash/files/idea-IC-183.5912.21/lib/sqlite-jdbc-3.21.0.1.jar
/home/petrus/.local/share/Trash/files/idea-IC-183.5912.21/plugins/svn4idea/lib/sqlite-jdbc-3.20.1.jar
/opt/idea-IC-183.5912.21/lib/sqlite-jdbc-3.21.0.1.jar
/opt/idea-IC-183.5912.21/plugins/svn4idea/lib/sqlite-jdbc-3.20.1.jar
/usr/lib/libreoffice/program/libjdbclo.so
/usr/lib/libreoffice/share/config/soffice.cfg/dbaccess/ui/generalspecialjdbcdetailspage.ui
/usr/lib/libreoffice/share/config/soffice.cfg/dbaccess/ui/jdbcconnectionpage.ui
/usr/lib/libreoffice/share/config/soffice.cfg/dbaccess/ui/specialjdbcconnectionpage.ui
/usr/share/doc/libpostgresql-jdbc-java
/usr/share/doc/libpostgresql-jdbc-java/README.md.gz
/usr/share/doc/libpostgresql-jdbc-java/changelog.Debian.gz
/usr/share/doc/libpostgresql-jdbc-java/copyright
/usr/share/java/postgresql-jdbc3.jar
/usr/share/java/postgresql-jdbc4.jar
/usr/share/java/sqlite-jdbc-3.27.2.1.jar
/usr/share/maven-repo/org/postgresql/pgjdbc-aggregate
/usr/share/maven-repo/org/postgresql/pgjdbc-aggregate/9.4.1212
/usr/share/maven-repo/org/postgresql/pgjdbc-aggregate/debian
/usr/share/maven-repo/org/postgresql/pgjdbc-aggregate/9.4.1212/pgjdbc-aggregate-9.4.1212.pom
/usr/share/maven-repo/org/postgresql/pgjdbc-aggregate/debian/pgjdbc-aggregate-debian.pom
/usr/share/netbeans/ide14/modules/ext/postgresql-9.2-1002.jdbc4.jar
/var/cache/apt/archives/libpostgresql-jdbc-java_9.4.1212-1_all.deb
/var/lib/dpkg/info/libpostgresql-jdbc-java.list
/var/lib/dpkg/info/libpostgresql-jdbc-java.md5sums
Come l'ho importato, non me lo ricordo.
 

Moffetta88

Moderatore
Staff Forum
Utente Èlite
20,465
12,882
CPU
i5-4690
Dissipatore
DEEPCOOL CAPTAIN 240EX
Scheda Madre
MSI Z97 U3 PLUS
HDD
KINGSTON SSD KC400 240GB
RAM
24GB BALLISTIX SPORT @2133MHz
GPU
STRIX GTX980 DC2OC
Audio
INTEGRATA
Monitor
AOC G2590VXQ
PSU
BEQUIET! System Power 7 500W
Case
DEEPCOOL MATREXX 55
Periferiche
NESSUNA
Net
EOLO 100
OS
UBUNTU/WINDOWS11
Ok, prova il codice che ti ho fornito.
Che ide usi per programmare in java?
 

petrusic

Utente Attivo
227
20
CPU
AMD Athlon - X86_64
Scheda Madre
Acer RS780HVF
HDD
SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
RAM
n.2 DDR" per 2GB
OS
fedora 28 Mate, Ubuntu Mate, Linux Mint 19
Ok, prova il codice che ti ho fornito.
Che ide usi per programmare in java?

In questi giorni sono stato impegnato a tempo pieno in altre attività. Ho potutio rimettere mani al mio programmino soltanto ora.

Rispondo prima alla tua domanda; attualmente non faccio uso di alcun IDE dedicato a JAVA per 2 motivi:
1. il mio pc è abbastanza datato e dovrei attrezzarne uno nuovo;
2. prima di avventurarmi in ambienti IDE, vorrei ancora addentrarmi nella programmazione JAVA con strumenti semplici, come un editor di testo di tipo Geany.

Bene, ora ritorno alla tua proposta di modificare il mio programma col codice che mi hai proposto. Ebbene, anche se "Class.forName" non dovrebbe essere più necessaria, ho aggiunto la riga relativa e la modifica successiva , ma la compilazione è andata male , per mancanza della gestione dell'eccezione " ClassNotFoundException".
Infatti, aggiungendovi tale eccezione, la compilazione è terminata senza errori.
L'esecuzione del programma, tuttavia, denuncia sempre l'eccezione d'errore per connessione non riuscita.
Codice:
java.lang.ClassNotFoundException: org.sqlite.JDBC
connessione del DB.-- jdbc:sqlite:/media/dirdati/dativari/contabfam/Contabfamdb -- non riuscita
Ma perchè? Non lo capisco.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,668
11,452
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
O è scritto in modo errato il path al database oppure non trova il driver del db (per sicurezza mettilo nella directory che contiene gli altri .java)
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!