RISOLTO Java e DataBase

Stato
Discussione chiusa ad ulteriori risposte.

Moffetta88

Moderatore
Staff Forum
Utente Èlite
20,465
12,880
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
Non serve sapere l'inglese con eclipse.
Ma bisogna vedere il singolo caso. Io non ho mai avuto problemi con eclipse, se non con l'integrazione con il plugin di microsoft per il versionamento.
Non ti resta che provarne uno. NetBeans a me non piace, intellij lo uso solo per android ( androidstudio )
 

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
Beh, mi sembra che arrivati a questo punto, l'obiettivo che volevo raggiungere senza l'uso di un IDE, non è più raggiungibile.
Credo perciò che non abbia più senso continuare la discussione. Non più nemmeno se continuare su Java. Sono molto deluso.
Grazie , comunque, a tutti per l'aiuto che mi avete dato. Ho imparato tanto e vi sono grato.
 
  • Mi piace
Reazioni: Mursey

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è stamani ho trovato una guida per connettere un database SQLite a un programma Java. qui fa riferimento all'utilizzo di un database SQLite attraverso la tecnologia Maven. Quindi non basta solo utilizzare un IDE di Java, occorre anche imparare e conoscere MAVEN.
Oggni passo avanti che credo di fare, vengo ributtato giù, nel vortice delle difficoltà strutturali di tutto l'insieme ambientale di Java.
ma che cos'è Maven? e poi, perchè proprio Maven e non altro?
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Maven è un gestore delle dipendenze, serve per automatizzare la build (ovvero il processo di compilazione, eventuale test e deployment, il rilascio del software da qualche parte, come un repository remoto) dei progetti Java. Ma non è affatto obbligatorio usarlo!
Per usare SQLite in Java, occorre il relativo driver JDBC, e lo trovi nel repository ufficiale del progetto, insieme a degli esempi di utilizzo. In particolare, qui puoi scaricare l'ultima versione (sqlite-jdbc-3.28.0.jar). Una volta scaricato, e creato un nuovo progetto in Eclipse, devi cliccare col tasto destro sulla cartella del progetto e selezionare Build Path -> Configure Build Path. Poi, dalla scheda Libraries, fai clic su Add External JARs e selezioni il file appena scaricato (a questo proposito ti consiglerei di creare una cartella lib nel progetto Eclipse e copiarlo lì piuttosto che averlo in un'altra cartella del pc). Clicca su Apply and Close per confermare. Questa operazione serve a dire a Eclipse (e quindi alla JDK, il compilatore Java) che può usare la libreria in questione, e dove trovarla.
Ora, piccola premessa: in Java esiste uno strumento che si chiama JDBC (Java DataBase Connection presumibilmente) che funge da livello di astrazione intermedio con i database, e serve a semplificare l'uso dei database. In pratica, anziché doversi studiare le API (diciamo le librerie per interfacciarsi a un software) dei vari db, tipo MySQL, SQLite, ecc, è possibile usare un'unica sintassi, e quindi lo stesso codice, per qualsiasi db, a patto che vi sia un driver corrispondente (il driver JDBC per l'appunto). È come un "adattatore universale" per db. Ti consiglio di copiare il codice di esempio presente nel repository GitHub che ti ho linkato sopra ed eseguirlo per capire come funziona. Ovviamente nell'esempio si collega a un db remoto, mentre per usare un db locale (sul pc) devi prima averlo creato, e quindi occorre installare SQLite (mentre prima installavamo solo il driver).
 

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

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Dentro la cartella del progetto, che si trova all'interno del workspace.
 

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
Dentro la cartella del progetto, che si trova all'interno del workspace.
Quindi se il work-space contiene il progetto Esercizio1 ed il progetto Esercizio2, ed entrambi utilizzano database SQLite, il driver jdbc.jar va copiato nelle cartelle lib di entrambi i progetti.
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Non è obbligatorio, potresti anche tenerlo in un unica cartella nella home, senza copiarlo per ogni progetto. Era più che altro per una questione di ordine e per non avere dipendenze sparse in giro per il filesystem, ad esempio se volessi trasferire il progetto altrove.
Così come non è obbligatorio che la cartella si chiami lib, diciamo che è una consuetudine forse, ma potrebbe chiamarsi anche pippo.
 
Ultima modifica:

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
Il mio eclipse-workspace si trova in una directory diversa dalla home. Ne riporto la parte saliente qui sotto:
Codice:
petrus@petrus-pc:/media/dirdati/dativari/java_vari$
.
├── bla...bla...bla
├── eclipse-workspace
│   ├── ContFamCancResta
│   │   ├── bin
│   │   │   └── ContFamCancResta.class
│   │   └── src
│   │       └── ContFamCancResta.java
│   ├── ProvaQualunque
│   │   ├── bin
│   │   │   └── ProvaQualunque.class
│   │   └── src
│   │       └── ProvaQualunque.java
│   ├── sqlite-jdbc-3.28.0.jar
│   └── SuperEnalotto
│       ├── bin
│       │   └── SuperEnalotto.class
│       └── src
│           ├── SuperEnalotto.class
│           └── SuperEnalotto.java
├── bla...bla...bla
Come puoi vedere all'interno del work-space ci sono soltanto la cartelle dei progettini di prova e studio miei.

Non vorrei essermi perso qualcosa nel trasferire l'eclipse-workspace nella cartella utilizzata per i lavori in Java.
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Va benissimo.
 

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
e allora non ho capito dove creare la nuova unica cartella "lib".
Se non nella eclipse-workspace, la creo soltanto all'interno di uno qualsiasi dei progetti presenti al suo interno?
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Se ne vuoi creare una sola condivisa da tutti i progetti, allora è più logico crearla nel workspace ma fuori dai progetti. Potresti anche non crearla e lasciare il file .jar dove si trova ora (mi sembra sia nel workspace).
 

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
Esatto. Così avevo capito di fare.
Grazie!
Post unito automaticamente:

:brindiamo:
librerie.png
 
Ultima modifica:

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
Essendo, ahimè, spratico di pratica di Java e di JDBC, secondo voi, la prima esecuzione del mio prgrammino poteva accedere al database Sqlite "ContabFamdb" costruito e manutenutoo fino ad oggi con altro applicativo?

Come avete detto? "No"
Infatti, è stato proprio così. É scaturito un errore già in fase di connessione

|il programma cancella nella tabella |
|Contamfamdb.restacassagg i record con |
|data contabile = a quella digitata |
-------------------------------------------------------
dare: 'S' per continuare
'n' per uscire dal programma
S
java.sql.SQLException: No suitable driver found for jdbc:sqlite:/media/dirdati/dativari/contabfam/ContabFamdb
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at GestDB.<init>(ContFamCancResta.java:161)
at ContFamCancResta.main(ContFamCancResta.java:70)
No suitable driver found for jdbc:sqlite:/media/dirdati/dativari/contabfam/ContabFamdb
connessione del DB.-- GestDB@60e53b93 -- non riuscita
Il percorso riportato dall'eccezione è corretto:
Codice:
petrus@petrus-pc:~$ ls -l /media/dirdati/dativari/contabfam/ContabFamdb
-rwxrwxrwx. 1 petrus sambashare 9552896 ago 13 22:06 /media/dirdati/dativari/contabfam/ContabFamdb

per completezza allego tutto il file del programma sorgente. Ho cercato di capire, in quasim tutta questa giornata, dove posso avere sbagliato, senza capirlo. Spero che mi possiate indirizzare sull'errore e come sanarlo.
 

Allegati

  • ContFamCancResta.txt
    7.7 KB · Visualizzazioni: 35

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Ho provato con il db di esempio di SQLite ("jdbc:sqlite:sample.db", usando la query dell'esempio presente su GitHub) e il programma funziona, ma ho dovuto commentare il blocco finally in letDb perché se chiudi il resultset non puoi visitarlo per leggerne i dati, quindi la chiusura va fatta dopo.
Quindi, posto che sia stato correttamente linkato il jar del driver jdbc di SQLite al build path del progetto Eclipse, forse c'è un problema nel percorso del db.
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!