webForumDet fria alternativet

Använda en helsträng vid koppling till databas

Javaur Java

5 svar · 277 visningar · startad av Nickemannen

NickemannenMedlem sedan aug. 20003 575 inlägg
#1

Jag håller på med java och skall koppla den mot en mysql databas.

men jag undrar om det finns något annat sätt än det min pdf säger. Den säger att man skall skriva

Class.forName("com.mysql.jdbc.Driver");
String dbUrl = "jdbc:mysql://blabla/fkfkf";
Connection objConn = DriverManager.getConnection(dburl,"användarnamn","lösenord");

Men man borde ju kunna använda DriverManager.getConnection och skippa class.forname grejen ?
kan man inte använda en connectionsträng som innehåller

Connection objConn = DriverManager.getConnection("Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;")

Som man använder i andra språk ?

ViktorMedlem sedan aug. 20021 752 inlägg
#2

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

Connection objConn = DriverManager.getConnection("jdbc:mysql://blabla/fkfkf","användarnamn","lösenord");

Då har du allt på en rad, men varför?

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.

/Viktor

NickemannenMedlem sedan aug. 20003 575 inlägg
#3

Men går det inte att använda
Connection objConn = DriverManager.getConnection(" Driver={mySQL};Server=mySrvName;Option=16834;Database=mydata
base;")
eller liknande

ViktorMedlem sedan aug. 20021 752 inlägg
#4

Inte vad jag vet, men vad är det du vill åstadkomma? Det kanske finns något annat sätt att lösa det på trots att det inte går att skriva som du vill.

/Viktor

NickemannenMedlem sedan aug. 20003 575 inlägg
#5

Jag försöker inte åstakomma något bara tänkte om det gick :)

spangoMedlem sedan juni 20008 205 inlägg
#6

Re: Använda en helsträng vid koppling till databas

Nickemannen skrev:

Men man borde ju kunna använda DriverManager.getConnection och skippa class.forname grejen ?
kan man inte använda en connectionsträng som innehåller

Connection objConn = DriverManager.getConnection("Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;")

Som man använder i andra språk ?

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 :)

137 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)