【发布时间】:2018-11-25 16:54:53
【问题描述】:
我有以下项目。我在 mysql 中加载了相同的数据库,也在 derby 中加载了相同的数据库。我能够连接到 mysql,但是当我尝试连接到 derby 时收到以下错误消息:
java.sql.SQLException: Failed to start database 'school' with class loader
sun.misc.Launcher$AppClassLoader@b4aac2, see the next exception for details.
代码如下:
dbconnect.java:
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static final String USERNAME = "rss";
private static final String PASSWORD = "westerly";
public static Connection getConnection(String driver, String database)
throws SQLException{
String URL;
switch (driver) {
case "mysql":
URL ="jdbc:" + driver + "://localhost:3306/" + database + "?
useSSL=false";
System.out.println(URL);
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
case "derby":
URL = "jdbc:derby:" + database ;
System.out.println(URL);
return DriverManager.getConnection(URL);
default:
System.out.println("only use mysql or derby");
System.exit(0);
return null;
}
}
dbselect.java:
package db;
import java.lang.reflect.Method;
import tables.students;
import tables.teacher;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class DBSelect {
static String driver;
static String database;
static String table;
public static void main(String[] args) throws SQLException {
table = "students";
try(Connection con = DBConnection.getConnection(driver="derby",database="school");
Statement stmt =
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs1 = stmt.executeQuery("select * from " + table);
)
{
students.getStudents(rs1);
ResultSet rs2 = stmt.executeQuery("select * from teacher");
System.out.println("");
teacher.getTeacher(rs2);
rs2.first();
try
{rs2.getInt("fee");
System.out.println("found");
stmt.executeUpdate("alter table teacher drop fee ");
}catch(SQLException e)
{
System.out.println("not found");
System.err.print(e);
stmt.executeUpdate("alter table teacher add fee int ");
}
} catch (SQLException e) {
System.err.print(e);
}
}
}
【问题讨论】:
标签: java connection derby