HAllo, ich will eine Java Programm mit einer Embedded Db machen.
Die Datenbank kann ich erstellen, aber leider kann ich dann keine Talellen erzeugen. bzw. denke ich das er die Tabellen erzeugt, ich aber einen Fehler beim hinzufügren von informationen machen. ich hänge hier mal meinen code ran. vllt kann mir jemand meinen Fehler sagen. Die exception komm´t immer da wo ich was hinzufügen will.
hier mein code, weiß leider gerade nicht wie ich hier ein codeblock einfüge
[HIGHLIGHT="Java"]package database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author kreye
*/
public class Verbindung {
//private Connection dbConnection = null;
private Statement stmt;
Connection dbConnection;
private String sql = "CREATE TABLE app.nutzer(ID INT NOT NULL, Name VARCHAR(32))";
public Verbindung() throws ClassNotFoundException, SQLException {
String userHomeDir = System.getProperty("user.home", ".");
String systemDir = userHomeDir + "/.addressbook";
// Set the db system directory.
System.setProperty("derby.system.home", systemDir);
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
String strUrl = "jdbc:derbyefaultAddressBook;";
try {
dbConnection = DriverManager.getConnection(strUrl);
statement();
System.out.println("gab es schon");
} catch (SQLException ex) {
//ex.printStackTrace();
String strUrl3 = "jdbc:derbyefaultAddressBook;create=true";
dbConnection = DriverManager.getConnection(strUrl3);
initialDb();
System.out.println("existierte nicht");
}
String strUrl2 = "jdbc:derbyefaultAddressBook;user=dbuser;password=dbuserpwd";
try {
dbConnection = DriverManager.getConnection(strUrl2);
System.out.println("Bin Drin");
statement();
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
/**
* @return the tmt
*/
public Statement getSTmt() {
return stmt;
}
private void initialDb() throws SQLException {
String kreye = "Kreye";
stmt.execute(sql);
stmt.executeUpdate("INSERT INTO app.nutzer (ID, Name)values(1,\""+kreye+"\")" );
//ResultSet datenbank = stmt.executeQuery("Select * from dbuser.nutzer");
System.out.println("Datenbank erzeugt");
//System.out.println("" + datenbank.getString("Name"));
}
private void statement() throws SQLException {
stmt = dbConnection.createStatement();
}
}[/HIGHLIGHT]
Hier die Exception
[HIGHLIGHT="Java"]
Exception in thread "main" java.sql.SQLSyntaxErrorException: Die Spalte 'Kreye' ist in keiner Tabelle der FROM-Liste enthalten, erscheint in einer Verknüpfungsspezifikation und befindet sich außerhalb des Geltungsbereichs derselben oder erscheint in einer HAVING-Klausel und ist nicht in der 'GROUP BY'-Liste enthalten. Wenn es sich um eine Anweisung CREATE oder ALTER TABLE handelt, ist 'Kreye' keine Spalte in der Zieltabelle.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown Source)
at database.Verbindung.initialDb(Verbindung.java:76)
at database.Verbindung.<init>(Verbindung.java:45)
at learning.Main.main(Main.java:22)
Caused by: java.sql.SQLException: Die Spalte 'Kreye' ist in keiner Tabelle der FROM-Liste enthalten, erscheint in einer Verknüpfungsspezifikation und befindet sich außerhalb des Geltungsbereichs derselben oder erscheint in einer HAVING-Klausel und ist nicht in der 'GROUP BY'-Liste enthalten. Wenn es sich um eine Anweisung CREATE oder ALTER TABLE handelt, ist 'Kreye' keine Spalte in der Zieltabelle.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 11 more
Caused by: ERROR 42X04: Die Spalte 'Kreye' ist in keiner Tabelle der FROM-Liste enthalten, erscheint in einer Verknüpfungsspezifikation und befindet sich außerhalb des Geltungsbereichs derselben oder erscheint in einer HAVING-Klausel und ist nicht in der 'GROUP BY'-Liste enthalten. Wenn es sich um eine Anweisung CREATE oder ALTER TABLE handelt, ist 'Kreye' keine Spalte in der Zieltabelle.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.ColumnReference.bindExpression(Unknown Source)
at org.apache.derby.impl.sql.compile.ResultColumn.bindExpression(Unknown Source)
at org.apache.derby.impl.sql.compile.ResultColumnList.bindExpressions(Unknown Source)
at org.apache.derby.impl.sql.compile.RowResultSetNode.bindExpressions(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bindExpressions(Unknown Source)
at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
... 5 more
Java Result: 1
[/HIGHLIGHT]
thx kreye
Die Datenbank kann ich erstellen, aber leider kann ich dann keine Talellen erzeugen. bzw. denke ich das er die Tabellen erzeugt, ich aber einen Fehler beim hinzufügren von informationen machen. ich hänge hier mal meinen code ran. vllt kann mir jemand meinen Fehler sagen. Die exception komm´t immer da wo ich was hinzufügen will.
hier mein code, weiß leider gerade nicht wie ich hier ein codeblock einfüge
[HIGHLIGHT="Java"]package database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author kreye
*/
public class Verbindung {
//private Connection dbConnection = null;
private Statement stmt;
Connection dbConnection;
private String sql = "CREATE TABLE app.nutzer(ID INT NOT NULL, Name VARCHAR(32))";
public Verbindung() throws ClassNotFoundException, SQLException {
String userHomeDir = System.getProperty("user.home", ".");
String systemDir = userHomeDir + "/.addressbook";
// Set the db system directory.
System.setProperty("derby.system.home", systemDir);
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
String strUrl = "jdbc:derbyefaultAddressBook;";
try {
dbConnection = DriverManager.getConnection(strUrl);
statement();
System.out.println("gab es schon");
} catch (SQLException ex) {
//ex.printStackTrace();
String strUrl3 = "jdbc:derbyefaultAddressBook;create=true";
dbConnection = DriverManager.getConnection(strUrl3);
initialDb();
System.out.println("existierte nicht");
}
String strUrl2 = "jdbc:derbyefaultAddressBook;user=dbuser;password=dbuserpwd";
try {
dbConnection = DriverManager.getConnection(strUrl2);
System.out.println("Bin Drin");
statement();
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
/**
* @return the tmt
*/
public Statement getSTmt() {
return stmt;
}
private void initialDb() throws SQLException {
String kreye = "Kreye";
stmt.execute(sql);
stmt.executeUpdate("INSERT INTO app.nutzer (ID, Name)values(1,\""+kreye+"\")" );
//ResultSet datenbank = stmt.executeQuery("Select * from dbuser.nutzer");
System.out.println("Datenbank erzeugt");
//System.out.println("" + datenbank.getString("Name"));
}
private void statement() throws SQLException {
stmt = dbConnection.createStatement();
}
}[/HIGHLIGHT]
Hier die Exception
[HIGHLIGHT="Java"]
Exception in thread "main" java.sql.SQLSyntaxErrorException: Die Spalte 'Kreye' ist in keiner Tabelle der FROM-Liste enthalten, erscheint in einer Verknüpfungsspezifikation und befindet sich außerhalb des Geltungsbereichs derselben oder erscheint in einer HAVING-Klausel und ist nicht in der 'GROUP BY'-Liste enthalten. Wenn es sich um eine Anweisung CREATE oder ALTER TABLE handelt, ist 'Kreye' keine Spalte in der Zieltabelle.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown Source)
at database.Verbindung.initialDb(Verbindung.java:76)
at database.Verbindung.<init>(Verbindung.java:45)
at learning.Main.main(Main.java:22)
Caused by: java.sql.SQLException: Die Spalte 'Kreye' ist in keiner Tabelle der FROM-Liste enthalten, erscheint in einer Verknüpfungsspezifikation und befindet sich außerhalb des Geltungsbereichs derselben oder erscheint in einer HAVING-Klausel und ist nicht in der 'GROUP BY'-Liste enthalten. Wenn es sich um eine Anweisung CREATE oder ALTER TABLE handelt, ist 'Kreye' keine Spalte in der Zieltabelle.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 11 more
Caused by: ERROR 42X04: Die Spalte 'Kreye' ist in keiner Tabelle der FROM-Liste enthalten, erscheint in einer Verknüpfungsspezifikation und befindet sich außerhalb des Geltungsbereichs derselben oder erscheint in einer HAVING-Klausel und ist nicht in der 'GROUP BY'-Liste enthalten. Wenn es sich um eine Anweisung CREATE oder ALTER TABLE handelt, ist 'Kreye' keine Spalte in der Zieltabelle.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.ColumnReference.bindExpression(Unknown Source)
at org.apache.derby.impl.sql.compile.ResultColumn.bindExpression(Unknown Source)
at org.apache.derby.impl.sql.compile.ResultColumnList.bindExpressions(Unknown Source)
at org.apache.derby.impl.sql.compile.RowResultSetNode.bindExpressions(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bindExpressions(Unknown Source)
at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
... 5 more
Java Result: 1
[/HIGHLIGHT]
thx kreye
Zuletzt bearbeitet: