Java bluej,连接mysql,但不连接derby
我有以下项目。我在mysql和derby中加载了相同的数据库。我可以连接到mysql,但当我尝试连接到derby时,会收到以下错误消息:Java bluej,连接mysql,但不连接derby,java,connection,derby,Java,Connection,Derby,我有以下项目。我在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: packa
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);
}
}
}
假设derby数据库存在(如果不存在,请修改JDBCURL以包含“创建”选项:
jdbc:derby:derbyDB;create=true
)
--从syserr更改为printstacktrace以获取更多信息:
最简单的情况:您已经有一个java实例在运行,它已经锁定了DB
奇怪的情况:“日志”目录丢失
最坏情况:数据库已损坏。谢谢。问题在于derby.jar的不同版本
} catch (SQLException e) {
e.printStackTrace();
}