Hallo Leute,
ich benötige Hilfe bei der automatischen Erstellung einer Datenbank, wenn diese noch nicht angelegt wurde. Und zwar sollte es so ablaufen, wenn ich das Projekt auf einem anderen Server ablaufen lassen will, sollte man nur im db.properties den Datenbanknamen, User und PW ändern müssen! Danach wird die Dummy Datenbank mit Testdatensätzen erzeugt und gefüllt.
Wen ich die Datenbank manuell anlege, funktionieren die Datenbankverbindungen, ich kann auslesen und reinschreiben, wenn ich es auf einen anderen Server zum laufen bringen will, krieg ich die Unten gepostete Exception, das die Datenbank nicht exisitert.
Danke
Ich habe meinen Lösungsansatz hier gepostet.
db.properties File:
Connection Factory:
Die zu erzeugende SQL Datenbank
ich benötige Hilfe bei der automatischen Erstellung einer Datenbank, wenn diese noch nicht angelegt wurde. Und zwar sollte es so ablaufen, wenn ich das Projekt auf einem anderen Server ablaufen lassen will, sollte man nur im db.properties den Datenbanknamen, User und PW ändern müssen! Danach wird die Dummy Datenbank mit Testdatensätzen erzeugt und gefüllt.
Wen ich die Datenbank manuell anlege, funktionieren die Datenbankverbindungen, ich kann auslesen und reinschreiben, wenn ich es auf einen anderen Server zum laufen bringen will, krieg ich die Unten gepostete Exception, das die Datenbank nicht exisitert.
Danke
Ich habe meinen Lösungsansatz hier gepostet.
db.properties File:
Code:
dbDriver com.mysql.jdbc.Driver
dbURL jdbc:mysql://localhost:3306/
dbName hugo
dbUser root
dbPwd init001
Connection Factory:
Java:
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class DbConMgr {
private static Properties dbProperties = null;
private static Connection con = null;
private static String dbDriver;
private static String dbURL;
private static String dbUser;
private static String dbPwd;
private static String dbName;
private DbConMgr() {
getDbProperties();
}
public static Connection getConnection() {
if (con == null) {
try {
new DbConMgr();
Class.forName(dbDriver);
con = DriverManager.getConnection(dbURL, dbUser, dbPwd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
return con;
}
public static void getDbProperties() {
dbProperties = new Properties();
InputStream stream = null;
stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("util/db.properties");
try {
dbProperties.load(stream);
} catch (Exception e) {
e.printStackTrace();
}
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
if (dbProperties.getProperty("dbDriver").length() != 0) {
dbDriver = dbProperties.getProperty("dbDriver");
}
else {
// TODO: Error message for missing property
}
if (dbProperties.getProperty("dbURL").length() != 0) {
dbURL = dbProperties.getProperty("dbURL") + dbProperties.getProperty("dbName");
// TODO: Use standardized file separator instead of "/"
}
else {
// TODO: Error message for missing property
}
if (dbProperties.getProperty("dbUser").length() != 0) {
dbUser = dbProperties.getProperty("dbUser");
}
else {
// TODO: Error message for missing property
}
if (dbProperties.getProperty("dbName").length() != 0) {
dbName = dbProperties.getProperty("dbName");
}
else {
// TODO: Error message for missing property
}
if (dbProperties.getProperty("dbPwd").length() != 0) {
dbPwd = dbProperties.getProperty("dbPwd");
}
else {
// TODO: Error message for missing property
}
}
private static String convertStreamToString(InputStream is) {
// TODO Auto-generated method stub
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
public static Connection get() throws SQLException {
Connection con = null;
try {
Class.forName(dbDriver);
con = DriverManager.getConnection(dbURL,dbUser,dbPwd);
} catch (Exception e) {
System.out.println(e +" using drv=" + dbDriver +
", dsn=" + dbURL +
", user=" + dbUser +
", pwd=" + dbPwd);
e.printStackTrace();
}
Statement stmt = null;
try {
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("USE " + dbName);
System.out.println("Use " + dbName);
} catch (SQLException e) {
InputStream stream = null;
stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("beans/create_db.sql");
stmt.executeQuery(convertStreamToString(stream));
}
return con;
}
}
Die zu erzeugende SQL Datenbank
SQL:
CREATE DATABASE IF NOT EXISTS hugo;
USE hugo;
DROP TABLE IF EXISTS metrica_tch_droprate;
DROP TABLE IF EXISTS metrica_stationsnamen;
CREATE TABLE metrica_stationsnamen (
CI int(11) NOT NULL,
STATION text NOT NULL,
COMMENT text NULL
);
CREATE TABLE metrica_tch_droprate (
CI int(11) NOT NULL,
KW01 float NOT NULL,
KW02 float NOT NULL,
KW03 float NOT NULL,
KW04 float NOT NULL,
KW05 float NOT NULL,
KW06 float NOT NULL,
KW07 float NOT NULL,
KW08 float NOT NULL,
KW09 float NOT NULL,
KW10 float NOT NULL,
KW11 float NOT NULL,
KW12 float NOT NULL,
KW13 float NOT NULL,
KW14 float NOT NULL,
KW15 float NOT NULL,
KW16 float NOT NULL
);
INSERT INTO metrica_stationsnamen(CI, STATION, COMMENT) VALUES
(1, 'Station 1', 'Interferenz mit Station 2'),
(2, Station 2', NULL),
(3, 'Station 3', NULL),
(4, 'Station 4', NULL),
(5, 'Station 5', NULL),
(6, 'Station 6', NULL),
(7, 'Station 7', NULL),
(8, 'Station 8', NULL),
(9, 'Station 9', NULL),
(10, 'Station 10', NULL);
INSERT INTO metrica_tch_droprate(CI, KW01, KW02, KW03, KW04, KW05, KW06, KW07, KW08, KW09, KW10, KW11, KW12, KW13, KW14, KW15, KW16) VALUES
(1, 0.33, 0.99, 2.01, 0.73, 1.28, 1.72, 1.37, 1.87, 1.15, 0.78, 1.49, 1.83, 1.46, 0.77, 1.59, 1.04),
(2, 0.54, 0.14, 0.17, 0.14, 0.15, 0.17, 0.15, 0.2, 0.14, 0.15, 0.15, 0.17, 0.14, 0.17, 0.19, 0.18),
(3, 0.5, 0.41, 0.52, 0.46, 0.44, 0.53, 0.57, 0.52, 0.53, 0.52, 0.46, 0.55, 0.66, 0.73, 0.92, 0.97),
(4, 0.65, 0.51, 0.55, 0.44, 0.45, 0.57, 0.56, 0.54, 0.52, 0.46, 0.7, 0.67, 0.73, 0.84, 1.26, 1.33),
(5, 0.09, 0.1, 0.09, 0.14, 0.14, 0.2, 0.16, 0.12, 0.12, 0.12, 0.18, 0.06, 0.24, 0.17, 0.12, 0.11),
(6, 0.21, 0.11, 0.1, 0.11, 0.1, 0.1, 0.21, 0.11, 0.12, 0.0, 0.11, 0.12, 0.12, 0.12, 0.13, 0.11),
(7, 0.27, 0.28, 0.31, 0.32, 0.24, 0.25, 0.32, 0.23, 0.25, 0.23, 0.28, 0.27, 0.24, 0.2, 0.22, 0.22),
(8, 0.08, 0.06, 0.11, 0.05, 0.06, 0.05, 0.05, 0.05, 0.06, 0.06, 0.0, 0.06, 0.12, 0.06, 0.12, 0.11),
(9, 0.21, 0.2, 0.18, 0.23, 1.18, 0.25, 0.23, 0.25, 0.19, 0.17, 0.26, 0.17, 0.33, 0.22, 0.22, 0.25),
(10, 0.33, 0.31, 0.32, 0.35, 0.33, 0.39, 0.32, 0.35, 0.32, 0.3, 0.32, 0.33, 0.37, 0.37, 0.3, 0.34);
ALTER TABLE metrica_stationsnamen
ADD CONSTRAINT PRIMARY
PRIMARY KEY (CI);
ALTER TABLE metrica_tch_droprate
ADD CONSTRAINT PRIMARY
PRIMARY KEY (CI);
Code:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: [B]Unknown database 'hugo'[/B]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1026)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2037)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:724)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:304)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at util.DbConMgr.getConnection(DbConMgr.java:40)
at util.DbTableOperations.getArray(DbTableOperations.java:36)
at tglibs.achillestable.doStartTag(achillestable.java:26)
at org.apache.jsp.index_jsp._jspx_meth_datatld_005fachillestable_005f0(index_jsp.java:124)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:90)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)