私はエラーになってるダービー組み込みモードでのテーブル作成するときに:私は次のメソッドを使用して、テーブル作成NullPointerExceptionが
private static final String driver = "org.apache.derby.jdbc.EmbeddedDriver";
private static final String protocol = "jdbc:derby:";
private static final Properties props = new Properties();
public static Connection getDatabaseConnection() {
try {
if(conn==null || conn.isClosed()) {
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(protocol+"minos;create:true;",props);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
:私はこの方法を使用して接続を作成する
Exception in thread "main" java.lang.NullPointerException
at com.deanchester.minos.utils.DatabaseManager.createTables(DatabaseManager.java:59)
at com.deanchester.minos.tests.testAddContestantMethod.main(testAddContestantMethod.java:21)
を
をprivate static final String tablesSQL = "CREATE TABLE `contestants` (`id` int(11) NOT NULL AUTO_INCREMENT,`first_name` varchar(100) DEFAULT NULL,`last_name` varchar(100) DEFAULT NULL, `entry` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE `finalTimes` (`id` int(11) NOT NULL AUTO_INCREMENT,`contestant` int(11) DEFAULT NULL,`time` int(11) DEFAULT NULL,PRIMARY KEY (`id`), KEY `contestant` (`contestant`), CONSTRAINT `finaltimes_ibfk_1` FOREIGN KEY (`contestant`) REFERENCES `contestants` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;CREATE TABLE `heatTimes` (`id` int(11) NOT NULL AUTO_INCREMENT,`contestant` int(11) DEFAULT NULL,`time` int(11) DEFAULT NULL,PRIMARY KEY (`id`),CONSTRAINT `heattimes_ibfk_1` FOREIGN KEY (`id`) REFERENCES `contestants` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
public static void createTables(){
try {
PreparedStatement ps = conn.prepareStatement(tablesSQL);
ps.executeUpdate();
System.out.println("Tables Created");
} catch (SQLException e) {
e.printStackTrace();
}
}
なぜこのエラーが発生しますか?私のテーブルを作成するSQLは、MYSQLデータベースのダンプから直接来ました。ソフトウェアはスタンドアロンのマシン上で動作するため、私はMYSQLから移行しました。これ以外にインストールする必要がなかったので、これはapache derbyが良い選択です。ここで
編集
は私の小さなテストクラスです:
public class testAddContestantMethod {
public static void main(String[] args){
Contestant cont = new Contestant("Dean","Chester","Mazey");
DatabaseManager.createTables();
cont.writeContestantToDatabase();
DatabaseManager.shutdownDatabase();
}
}
私が間違っvaribleを使用していたので、それは 'NullPointerException'ました接続のために。そして、私が 'conn.prepareStatement(" ");'を呼んでいたときに、割り当てられていない/初期化されていなかった – Dean