PDA

View Full Version : [JAVA] Connessione a db Sql Server 2005 attraverso JDBC


VegetaSSJ5
05-06-2008, 20:18
Ho bisogno di accedere ad un db gestito con SQL Server 2005 Express da un programma scritto in java.
Ho scaricato ed il SQL Server 2005 Express dal sito Microsoft. Il servizio è correttamente avviato.
Ho scaricato anche il driver JDBC da qui (http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=c47053eb-3b64-4794-950d-81e1ec91c1ba) e l'ho posizionato nel file system al percorso C:\Programmi\MicrosoftSQLServer2005JDBCDriver\sqljdbc_1.2\ita\sqljdbc.jar

Ho provato a testare la connessione al db attraverso questo semplice programma:import java.sql.*;

public class Main {

public static void main (String[] args) {
String connectionUrl = "jdbc:sqlserver://localhost;databaseName=webtma;user=Armando;";

// Declare the JDBC objects
Connection con = null;

try {
// Establish the connection
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
}

// Handle any errors that may have occurred
catch (Exception e) {
e.printStackTrace();
}

finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (stmt != null) try { stmt.close(); } catch(Exception e) {}
if (con != null) try { con.close(); } catch(Exception e) {}
}
}
}La compilazione attraverso netbeans va a buon fine, ma a runtime mi dà questo errore:run:
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at dbtest.Main.main(Main.java:30)Se lo compilo manualmente da riga di comando anche qui la compilazione va a buon fine ma a runtime mi dà quest'altro errore:Exception in thread "main" java.lang.NoClassDefFoundError: Main
Caused by: java.lang.ClassNotFoundException: Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)Ragazzi per favore potete darmi una mano?!? Tutto ciò che chiedo è connettermi ad un db su sql server 2005.... :cry:

GRAZIE

wizard1993
05-06-2008, 21:07
in netbeans hai aggiunto la libreria del driver sql?

VegetaSSJ5
05-06-2008, 21:13
in netbeans hai aggiunto la libreria del driver sql?
come?

wizard1993
05-06-2008, 21:16
prendi la libreria in jar e la aggiungi tramite il procedimento qui sotto descritto:
nella scehrmata ad albero del progetto clikki cn il destro su library e scegli di aggiungere un jar.
a me questo problema lo faceva con il driver mysql

VegetaSSJ5
05-06-2008, 21:31
prendi la libreria in jar e la aggiungi tramite il procedimento qui sotto descritto:
nella scehrmata ad albero del progetto clikki cn il destro su library e scegli di aggiungere un jar.
a me questo problema lo faceva con il driver mysql
scusa ma non riesco a capire quale sia questo pulsante library a cui ti riferisci

http://img32.picoodle.com/img/img32/4/6/5/t_img1m_39157b5.jpg (http://www.picoodle.com/view.php?img=/4/6/5/f_img1m_39157b5.jpg&srv=img32)

VegetaSSJ5
05-06-2008, 21:48
su netbeans c'è un tool comodo per sviluppare applicazioni che si appoggiano ad un database.

andando su: File -> New Project -> Java -> Java Desktop Application -> Next -> Database Application -> Next -> Database Connection -> New Database Connection... -> Name -> New Driver... -> Add -> [DRIVER JDBC SQL SERVER]
e quindi impostando la stringa di connessione e i dati per l'accesso, dovrebbe effettuare da solo una connessione al db, ma a me non funziona e restituisce questo errore:

http://img26.picoodle.com/img/img26/4/6/5/t_img1m_31cbbeb.jpg (http://www.picoodle.com/view.php?img=/4/6/5/f_img1m_31cbbeb.jpg&srv=img26)

qualcuno riesce invece a connettersi con successo in questo modo?

banryu79
06-06-2008, 10:29
In NetBeans:
click destro sull'icona del progetto nella tree view "Project" e selezioni l'ultima voce del contest menu: "Properties".
Si apre una dialog: anche qui c'è una tree view a sinistra; click per selezionare la voce "Libraries", quindi click sul bottone "Add Jar/Folders..." e selezioni il file .jar da aggiungere.

^TiGeRShArK^
06-06-2008, 12:41
In NetBeans:
click destro sull'icona del progetto nella tree view "Project" e selezioni l'ultima voce del contest menu: "Properties".
Si apre una dialog: anche qui c'è una tree view a sinistra; click per selezionare la voce "Libraries", quindi click sul bottone "Add Jar/Folders..." e selezioni il file .jar da aggiungere.
quoto. :O
Il problema del jar mancante nel classpath tra l'altro avviene solo al run-time e non al compile-time perchè il driver viene caricato dinamicamente tramite Class.forName()

VegetaSSJ5
06-06-2008, 20:38
ragazzi, problema risolto! :yeah:

diciamo che per trovare la soluzione sono quasi impazzito, per questo la posto qui così da evitare l'impazzimento di qualcun altro che si potesse trovare nella mia stessa situazione.

Il problema non riguardava nè netbeans, nè il classpath, nè il driver jdbc; bisognava attivare la cosiddetta "trusted connection" su SQL Server in questo modo:
(questo è valido per la versione express, cmq penso che per quella full il procedimento sia simile)

Aprire SQL Server Management Studio Express ed entrare facendo il login. Nella colonna di sinistra (Esplora oggetti) cliccare col destro sull'istanza del server in esecuzione, quindi su Proprietà. Nella finestra che si apre cliccare su Protezione -> Autenticazione di SQL Server e di Windows.


Grazie a chiunque sia intervenuto in questa discussione. ;)