Guten Morgen!
Ich möchte Werte in eine Datenbank schreiben. Ich hatte hierfür einen php-Klasse geschrieben, welche Datenbanken und Tabellen anlegt und diese mit den Werten füllt. Da das Skript aber regelmäßig ausgeführt werden muss und ich keinen Cron-Job dafür verwenden will, bin ich dazu übergegangen, eine Java-Anwendung für diesen Zweck einzusetzen. Allerdings habe ich Probleme meine php-Klasse auf Java umzumünzen.
Ich habe momentan eine Klasse wie folgt implementiert:
Meine konkreten Fragen wären folgende:
* Verwende ich den richtigen Treiber? (ich verwende eine MySQL-Datenbank) - Denn im Javabuch wird der Treiber mit sun.jdbc.odbc.JdbcOdbcDriver initilisiert. Ist die Synthax der SQL-Kommandos abhängig vom Treiber, oder nur von der Datenbank?
* Lässt sich eine Connection auch ohne Angabe eines Datenbanknames erzeugen? Bei php ging dies, hier bei Java erhielt ich leider einen Fehler.
Ich möchte Werte in eine Datenbank schreiben. Ich hatte hierfür einen php-Klasse geschrieben, welche Datenbanken und Tabellen anlegt und diese mit den Werten füllt. Da das Skript aber regelmäßig ausgeführt werden muss und ich keinen Cron-Job dafür verwenden will, bin ich dazu übergegangen, eine Java-Anwendung für diesen Zweck einzusetzen. Allerdings habe ich Probleme meine php-Klasse auf Java umzumünzen.
Ich habe momentan eine Klasse wie folgt implementiert:
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SQL {
private static Connection m_conn = null;
public SQL(String host, String port, String db, String user, String pwd) {
try {
// Datenbanktreiber für ODBC Schnittstellen laden.
// Für verschiedene ODBC-Datenbanken muss dieser Treiber
// nur einmal geladen werden.
Class.forName("com.mysql.jdbc.Driver");
// Verbindung zur ODBC-Datenbank 'sakila' herstellen.
// Es wird die JDBC-ODBC-Brücke verwendet.
m_conn = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" +
db + "?" + "user=" + user + "&" + "password=" + pwd);
} catch(ClassNotFoundException e) {
System.out.println("Treiber nicht gefunden");
} catch(SQLException e) {
System.out.println("Connect nicht moeglich");
}
}
/**
* Prüft, ob eine Datenbank existiert
*/
public void existsDatabase(String database) {
if(m_conn != null) {
try {
// Anfrage-Statement erzeugen.
Statement query = m_conn.createStatement();
// Ergebnistabelle erzeugen und abholen.
String sql = "SHOW DATABASES";
ResultSet result = query.executeQuery(sql);
// ???
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* Erstellt eine neue Datenbank
*/
public void createDatabase(String database) {
if(m_conn != null) {
try {
// Anfrage-Statement erzeugen.
Statement query = m_conn.createStatement();
// Ergebnistabelle erzeugen und abholen.
String sql = "CREATE DATABASE IF NOT EXISTS " + database;
ResultSet result = query.executeQuery(sql); // wirft eine SQLException
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Meine konkreten Fragen wären folgende:
* Verwende ich den richtigen Treiber? (ich verwende eine MySQL-Datenbank) - Denn im Javabuch wird der Treiber mit sun.jdbc.odbc.JdbcOdbcDriver initilisiert. Ist die Synthax der SQL-Kommandos abhängig vom Treiber, oder nur von der Datenbank?
* Lässt sich eine Connection auch ohne Angabe eines Datenbanknames erzeugen? Bei php ging dies, hier bei Java erhielt ich leider einen Fehler.