Det som du gör med Class.forName(XXX); är vad jag vet bara för att testa så att klassen finns och ladda den, jag tror du kan hoppa över denna rad.
De andra två raderna kan du ju lätt göra om till en rad
Ofta vill du kunna hämta databas klass och url från en config fil och då vill du antagligen också testa om klassen finns osv innan du försöker skapa en connection.
Men går det inte att använda
Connection objConn = DriverManager.getConnection(" Driver={mySQL};Server=mySrvName;Option=16834;Database=mydata
base;")
eller liknande
I "andra språk", d.v.s. där ODBC används ;) Du kan använda ODBC från Java, om du använder JdbcOdbcDriver - Googla om du vill veta mer. men du måste fortfarande använda Class.forName
Anledningen till att man måste använda Class.forName är för att drivern någonstans måste registreras, så att DriverManager vet var den ska leta upp drivrutinen till jdbc:mysql:-databaser. I ODBC har man registrerat en driver någonstans i operativsystemet, men eftersom man inte vill göra sådana antaganden i Java (delvis för att slippa en massa konstiga beroenden till höger och vänster) har man som konvention gjort som så att drivrutinsklasser registrerar sig själva hos DriverManager när de laddas (man kan lösa det på godtyckligt annat sätt, men det här är felxibelt). Man kan nämligen få kod att köras i klasser när de laddas, i static-blocket:
class StaticTest {
static {
System.out.println("Klassen StaticTest laddad.");
}
}
Prova att köra den klassen, och lägg sedan till en main-metod som skriver ut nåt så ser du i vilken ordning allt sker :)
259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849