Я работаю в приложении, которое использует сервлеты и mysql.Использование класса java для создания базы данных
Я хотел бы создать файл .jar, способный создать базу данных, которую будет использовать приложение. Это будет сделано только один раз, чтобы создать db.
У меня нет никаких проблем в получении доступа к базе данных, делать что-то вроде этого:
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");
, но я получаю следующее сообщение об ошибке:
Исключение в потоке "основной" com.mysql.jdbc.exceptions.jdbc4 .MySQLSyntaxErrorException: доступ запрещен для пользователя 'admin' @ 'localhost' в базу данных 'hrapp' at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) at sun.reflect.NativeConstructorAccessorImpl.newInstance (Неизвестно S сходный код) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Unknown Source) в java.lang.reflect.Constructor.newInstance (Unknown Source) в com.mysql.jdbc.Util.handleNewInstance (Util.java:406) в 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) на com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3491) на com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3423) в com.mysql.jdbc.MysqlIO.sendCommand (MysqlIO.java:1936) at com.mysql.jdbc.MysqlIO.sqlQueryDirect (MysqlIO.java:2060) at com.mysql.j dbc.ConnectionImpl.execSQL (ConnectionImpl.java:2536) на com.mysql.jdbc.StatementImpl.executeUpdate (StatementImpl.java:1564) на com.mysql.jdbc.StatementImpl.executeUpdate (StatementImpl.java:1485) на BaseDatosSetup.BaseDatosSetup.main (BaseDatosSetup.java:18)
Я решил его, предоставив пользователю действие для создания. Я не знаю, почему, я делал это как администратор.
Если вы можете запрограммировать SELECT, почему вы не можете запрограммировать CREATE TABLE/INSERT/LOAD? – gary
Не знаю, если я подключусь к одной из моих баз данных, а затем использую: ResultSet rs = st.executeQuery («select * from audiolist2»); Это работает. – dedalo