我正在开发一款使用servlets和mysql的应用程序。
我想创建一个.jar文件来创建应用程序将使用的数据库。这将只有一次,在创建数据库之后完成。
我没有问题访问数据库,可以像以下这样操作:
这很好,但我需要做的是从Java类创建一个新的数据库(和其表),这可行吗?
我正在尝试这样做:
但是我遇到了以下错误:
我想创建一个.jar文件来创建应用程序将使用的数据库。这将只有一次,在创建数据库之后完成。
我没有问题访问数据库,可以像以下这样操作:
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conexion = (Connection)DriverManager.getConnection("jdbc:mysql://localhost/test","admin","admin");
if (!conexion.isClosed())
{
Statement st = (Statement) conexion.createStatement();
ResultSet rs = st.executeQuery("select * from table_name" );
}
conexion.close();
这很好,但我需要做的是从Java类创建一个新的数据库(和其表),这可行吗?
我正在尝试这样做:
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conexion = (Connection)DriverManager.getConnection("jdbc:mysql://localhost/mysql","admin","admin");
Statement st = (Statement) conexion.createStatement();
st.executeUpdate("CREATE DATABASE hrapp");
但是我遇到了以下错误:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user 'admin'@'localhost' to database 'hrapp'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
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.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1564)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1485)
at BaseDatosSetup.BaseDatosSetup.main(BaseDatosSetup.java:18)
我通过授予用户创建操作来解决了这个问题。我不知道为什么,我一开始是以管理员身份进行操作的。