# DBProgrammierung mit Java?



## Extremefall (23. Mai 2011)

Hallo,
ich würde gerne einen Terminkalender in JAVA implementieren. Die Termine sollen dann über das Internet über eine Datenbank abgefragt werden. Ich kenne es leider aus PHP nur mit mysql und habe mit JAVA noch keine Erfahrung gesammelt. Wie erstelle ich in Java eine Datenbank und geht es kostenlos? Wie greife ich darauf zu? Könntet ihr mir sagen, wie es in JAVA funktioniert?


----------



## Final_Striker (23. Mai 2011)

MySQL and Java JDBC - Tutorial


----------



## Extremefall (23. Mai 2011)

Hallo,
ich habe eine Website mit MYSQL Account. Kann man diesen dann auch mit JAVA nutzen? Leider verbindet er bei mir nicht richtig:#

```
import java.io.*;
import java.sql.*;
public class DatabaseWork {

	Connection conn;

public DatabaseWork()throws Exception{
	// Treiber wird erzeugt und geladen
	String treiber = "com.mysql.jdbc.Driver" ;
	Class.forName( treiber ).newInstance();
	String dburl = "localhost";
	String dbname = "****";
	String username = "*****";
	String password = "*****";
	String database = "jdbc:mysql://"+dburl+"/"+dbname;
	conn = DriverManager.getConnection(database, username, password);
	ResultSet rs = getQuery("select * from usr;");
	while(rs.next()){
	                String Zeile = (rs.getString("name"));
	                System.out.println(Zeile);
	        }
}
public ResultSet getQuery(String sqlquery) throws SQLException{
    Statement  st = conn.createStatement();
    ResultSet rs = st.executeQuery( sqlquery );
    return rs;
}
public static void main(String[] args) throws Exception{
new DatabaseWork();
}
}
```
Ich erhalte diesen Fehler:

```
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2333)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at DatabaseWork.<init>(DatabaseWork.java:16)
	at DatabaseWork.main(DatabaseWork.java:29)
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294)
	... 16 more
```
Woran mag das liegen? Liegt es daran, dass es der MYSQL Account von meiner Website ist?


----------



## ARadauer (23. Mai 2011)

Wo läuft das Program? bei dir auf dem Computer?



> String dburl = "localhost";


localhost ist das dein eigener Rechner, da läuft die Datenbank nicht. Ein bisschen mitdenken muss man schon. Java ist etwas komplexer als PHP.

Also dort musst du deine Domain eingeben. Falls es nicht klappt, könnte es sein, dass dein Webhoster einfach keine Zugriffe von aussen zulasst. Versuch mal mit sqlyog zu verbinden.
Ich hoste bei all-inkl.com, da komm ich von aussen auf die DB hin...


----------



## Extremefall (23. Mai 2011)

Ich erhalte folgende Rückmeldung:
Exception in thread "main" java.sql.SQLException: null,  message from server: "Host 'p4FC59625.dip.t-dialin.net' is not allowed to connect to this MySQL server

Kann man den Fehler irgendwie umgehen, außer den Server zu wechseln?


----------



## ARadauer (23. Mai 2011)

Extremefall hat gesagt.:


> Kann man den Fehler irgendwie umgehen, außer den Server zu wechseln?


ich denke nicht, "is not allowed to connect" ist ziemlich eindeutig...


----------



## Extremefall (23. Mai 2011)

Kennst du dementsprechend einen kostenlosen MYSQL Server für JAVA? Wäre echt toll.


----------



## Rin (26. Mai 2011)

bist du an mysql gebunden? wenn du keinen free server findest oder keine eigenen hosten willst würde ich dir empfehlen JavaDB / Derby zu verwenden ist eine freeware standalone datenbank 

LG


----------

