Ich bekomme bei folgender Klasse eine java.sql.SQLException:
Hier die Fehlermeldung:
Die Datenbank aeb liegt ganz normal auf dem localhost. NUR ZU TESTZWECKEN habe ich derzeit nur den root ohne Passwort als User. Hier kommt selbstverständlich noch eine Zugriffskontrolle :bahnhof:
Code:
// Datei CreateMysqlTables01.java
import java.sql.*;
public class CreateMysqlTables01 {
public static void main( String[] args ) {
// Bitte ändern sie den Host-Namen auf
// die Einstellung in Ihrem System.
//String host = "maggie";
String host = "localhost";
String port = "3306";
// Treiber-Typ ist "mysql".
String dbType = "mysql";
// Name der Datenbank.
// Bitte ändern Sie den Namen entsprechend
// Ihrer Konfiguration.
//String dbName = "test";
String dbName = "aeb";
// Datenbank-User
// Bitte ändern Sie den Namen entsprechend
// Ihrer Konfiguration.
//String dbUser = "hemu";
String dbUser = "root";
// Datenbank-Kennwort
// Bitte ändern Sie das Kennwort
// entsprechend Ihrer Konfiguration.
String dbPwd = "";
// Mit der folgenden Anweisung
// geben wir die JDBC-Treiber für Oracle und
// Mysql an, die je nach Vorhandensein
// geladen werden.
// (Dies kann man natürlich auch über
// die Kommandozeile mit dem "-D"-Schalter
// und dem Property "jdbc.drivers" tun).
String myDrivers = "com.mysql.jdbc.Driver";
System.setProperty(
"jdbc.drivers",
myDrivers
);
// Nun sollte der Treiber geladen sein.
// Wir bauen die erste Verbindung zur
// Datenbank auf.
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
String uri = "jdbc:" + dbType + "://" + host + ":" + port + "/" + dbName;
try {
conn = DriverManager.getConnection(
uri,
dbUser,
dbPwd
);
sql = "CREATE TABLE person (" +
"pers_id BIGINT NOT NULL " +
"AUTO_INCREMENT PRIMARY KEY," +
"pers_ln VARCHAR( 255 ) BINARY NOT NULL," +
"pers_fn VARCHAR( 255 ) BINARY NOT NULL," +
"pers_mn VARCHAR( 255 ) BINARY," +
"pers_email VARCHAR( 255 )," +
"INDEX( pers_ln )," +
"INDEX( pers_fn )," +
"INDEX( pers_email )" +
")";
pstmt = conn.prepareStatement( sql );
pstmt.execute();
sql = "CREATE TABLE address (" +
"addr_id BIGINT NOT NULL " +
"AUTO_INCREMENT PRIMARY KEY," +
"addr_ctry VARCHAR( 255 ) " +
"BINARY NOT NULL," +
"addr_zip VARCHAR( 255 ) BINARY NOT NULL," +
"addr_city VARCHAR( 255 ) " +
"BINARY NOT NULL," +
"addr_street VARCHAR( 255 ) " +
"BINARY NOT NULL," +
"INDEX( addr_ctry )," +
"INDEX( addr_zip )," +
"INDEX( addr_city )," +
"INDEX( addr_street )" +
")";
pstmt = conn.prepareStatement( sql );
pstmt.execute();
sql = "CREATE TABLE phone (" +
"phone_id BIGINT NOT NULL " +
"AUTO_INCREMENT PRIMARY KEY," +
"phone_num VARCHAR( 255 ) NOT NULL," +
"UNIQUE( phone_num )" +
")";
pstmt = conn.prepareStatement( sql );
pstmt.execute();
sql = "CREATE TABLE pers_addr (" +
"pa_pers_id BIGINT NOT NULL," +
"pa_addr_id BIGINT NOT NULL," +
"UNIQUE( pa_pers_id, pa_addr_id )" +
")";
pstmt = conn.prepareStatement( sql );
pstmt.execute();
sql = "CREATE TABLE pers_phone (" +
"pp_pers_id BIGINT NOT NULL," +
"pp_phone_id BIGINT NOT NULL," +
"UNIQUE( pp_pers_id,pp_phone_id )" +
")";
pstmt = conn.prepareStatement( sql );
pstmt.execute();
} catch ( Exception ex ) {
System.err.print(
ex + "\nsql = " + sql
);
System.exit( 1 );
} finally {
if ( pstmt != null ) {
try {
pstmt.close();
} catch ( Exception ign ) {}
}
if ( conn != null ) {
try {
conn.close();
} catch ( Exception ign ) {}
}
}
System.exit( 0 );
}
}
Hier die Fehlermeldung:
Code:
java.sql.SQLException: Unable to connect to any hosts to exception: java.net.SocketException: Unrecognized Windows Sockets error: 10106: create
Die Datenbank aeb liegt ganz normal auf dem localhost. NUR ZU TESTZWECKEN habe ich derzeit nur den root ohne Passwort als User. Hier kommt selbstverständlich noch eine Zugriffskontrolle :bahnhof: