TypeMedlem sedan mars 20021 340 inlägg
Hejsan
Jag har arbetat lite med Java tidigare men tänkte nu friska upp mina kunskaper. Det har dock tagit jättestopp och jag hoppas på bra o snabb hjälp.
Jag vill kontakta en databas som ligger på adressen: mysql13.sigvardsson.nu
Databasen heter: sigvardsson_nu
Jag har absolut ingen aning om hur man ska göra. Har försökt med en fil jag hittade i en gammal labb som heter mysql.jar. Den la jag i java-katalogen på min dator under lib.
Koden jag använder är:
public class DBMYSQL{
public final String DBADRESS="jdbc:mysql://mysql13.sigvardsson.nu/sigvardsson_nu";
private String USER="sigvards_nu@s906";
private String PASSW="****************";
private Connection connection;
public boolean connect(){
try{
Properties prop = new Properties();
prop.setProperty("user", USER);
prop.setProperty("password", PASSW);
connection = DriverManager.getConnection(DBADRESS, prop);
}catch(SQLException e){
return false;
}
return true;
}
public DBMYSQL(){
}
}
Sen har jag skapat ett objekt av klassen DBMYSQL och jag försöker anropa connect:
myDatabase = new DBMYSQL();
if(myDatabase.connect())
JOptionPane.showMessageDialog(null,"You are connected to the Database!","Connected",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null,"You are NOT connected to the Database!","Not Connected",JOptionPane.ERROR_MESSAGE);
Som ni märker vet jag inte så mycket av vad jag gör... Är det tex rätt att returnera true och false där jag gör det? Funkar min funktion som jag tror? Varför går det inte att kontakta databasen? Lösenordet är ett annat än ******* så klart!
Tacksam för lite guidning i djungeln...
TypeMedlem sedan mars 20021 340 inlägg
Jag har en känsla av att jag postat i fel forum. Har tänkt att använda en java-applet. Ska det ligga i java-forumet istället? Har inte riktigt någon koll...
ViktorMedlem sedan aug. 20021 710 inlägg
Tråd flyttad från "Java 2 Enterprise Edition"
/Viktor
ViktorMedlem sedan aug. 20021 710 inlägg
För lite info om hur man kontaktar en databas kan jag osjälviskt rekomendera Java - Kod för att ansluta till en databas :)
När det gäller databas access från en applet så är det för det första inte att rekomendera pga säkerhets risker, tex är det hur lätt som hellst att dekompilera koden och därigenom så tillgång till lösenordet för databasen. För det andra så är miljön som en applet kan arbeta i mycket begränsad, den kan t.ex. bara kontakta den dator från vilken den har blivit laddad så för att du ska kunna ansluta till en databas på servern "mysql13.sigvardsson.nu" så måste du ladda din applet från just den servern också (vet inte om det måste vara samma sub domän eller inte).
Att retunera true/false på det sättet är helt rätt, men jag skulle även rekomendera att du skriver ut vad som gick fel till System.err,
}catch(SQLException e){
e.printStackTrace(System.err);
return false;
}
Det gör det mycket lättare att fel söka programet senare.
För att felsöka en Applet så kan du använda Appletviewer eller IE/Mozilla, om du använder IE/Mozilla så har du ett meny alternativ, "Java Console" eller liknande, där du kan se alla fel medelanden från din applet.
/Viktor
TypeMedlem sedan mars 20021 340 inlägg
Viktor:
Tack! Säkerhetsrisken hade jag inte tänkt på...
Jag ska bara själv kunna använda databasen till en början så då kanske det räcker med att jag har den på min egen dator och senare lägger upp den på servern när databasen är fylld och använder tex jsp för att visa infon i den. eller är jsp också en säkerhetsrisk?
/red
ett problem är redan löst iaf.
Mc FettoMedlem sedan nov. 20021 920 inlägg
nej, jsp arbetar på serversidan och klienten får endast upp information som serversidan pressenterar. Alltså finns det ingen applikation på klientsidan med databaskopplingar etc. Sen finns där säkert andra säkerhetsrisker...
TypeMedlem sedan mars 20021 340 inlägg
Nu börjar jag bli för trött på den här skiten. varför ska det vara så svårt att nå databasen????
Nu ser min kod ut så här:
public class DBMYSQL{
public final String DBADRESS="jdbc:mysql://localhost:3306/sigvardsson_local";
private String USER="root";
private String PASSW="";
private Connection connection;
public boolean connect(){
try{
Properties prop = new Properties();
prop.setProperty("user", USER);
prop.setProperty("password", PASSW);
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(DBADRESS, prop);
}catch(Exception e){
e.printStackTrace(System.err);
return false;
}
return true;
}
public DBMYSQL(){
connect();
}
public static void main(String args[]){
DBMYSQL myData = new DBMYSQL();
}
}
Jag får felmess:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at DBMYSQL.connect(DBMYSQL.java:17)
at DBMYSQL.<init>(DBMYSQL.java:27)
at DBMYSQL.main(DBMYSQL.java:31)
Jag har testat alla möjliga kombinationer... har filen mysql-connector-java-3.0.15-ga-bin.jar som ligger i katalogen: C:\j2sdk1.4.1_03\jre\lib\ext.
Det funkar ändå inte!!! Jag har fixat miljövariablerna... lagt in classpath under både system och användarvariabler... visste inte vart det skulle va. jag kör winXP pro...
Hjäälp ;)
TypeMedlem sedan mars 20021 340 inlägg
Efter 7h av bråk med javan har jag lyckats få igång det. Problemet var att jag inte hade .jar-filen på rätt ställe. när jag gjorde det rätt funkade det. tror jag... eller kanske mest hoppas. drygt.
cefalkMedlem sedan juni 2000283 inlägg
Var la du .jar filen?? Har samma problem.
cefalkMedlem sedan juni 2000283 inlägg
Hittade följande inlägg i en annan tråd så det löste sig.
Viktor skrev:
Ok, jag tror problemet är att mysql ligger i din ext katalog för din JRE som används för program, inte den som används för applets i din browser, kolla om du har två eller fler JRE kataloger (Java installationer) och se till att den ligger i alla.
Problem kommer det dock bli om någon som inte har mysql försöker använda din applet, det kan lösas på två sätt, ett bra och ett dåligt
Dåligt sätt, se till så att mysql alltid laddas ner med ditt program. Om du kör med JAR filer så packar du upp mysql och sedan packar ner alla filer och kataloger med ditt egna program i en stor JAR fil som du sedan använder som vanligt.
Om du inte kör med JAR filer så packar du upp mysql filen i samma katalog där du har din applet (i din codebase) så kommer den att laddas ner vid behov. Du kan packa upp JAR filer med WinZip.
Bra sätt, använd inte SQL i din applet. Skapa en server applikation som alltid körs på servern och som sköter all databas kontakt. Kontakten mellan servern och appleten sker genom Sockets. Om du kör SQL i din Applet så kan vem som hellst ta reda på ditt lösenord och användarnamn för din databas genom att dekompilera din applet.
/Viktor