Я делаю Java MySQL CLI, и у меня возникают проблемы с выбором базы данных. При подключении к серверу баз данных, не включают в себя базу данныхСвязать базу данных с существующим подключением JBDC
Console console = System.console();
String host = console.readLine("MySQL Host: ");
host = "jdbc:mysql://"+host+":3306/";
Потому что я хочу, чтобы пользователи могли выбрать базу данных самостоятельно. У меня есть listDatabases
функцию, которая отлично работает нормально, но если я хочу, чтобы запросить таблицу, я получаю следующую ошибку:
Jan 13, 2015 4:06:40 PM com.user.package.MySQL listTables
SEVERE: No database selected
java.sql.SQLException: No database selected
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1446)
at com.user.package.MySQL.listTables(MySQL.java:92)
at com.user.package.MySQL.select(MySQL.java:81)
at com.user.package.Main.main(Main.java:52)
Когда пользователь выбирает таблицу следующая функция запускается на выполнение:
public void useDatabase() {
Statement useStatement = null;
ResultSet use = null;
String database = this.getDatbase();
try {
useStatement = this.getCon().createStatement();
use = useStatement.executeQuery("USE "+database);
}
catch (SQLException ex) {
Logger lgr = Logger.getLogger(MySQL.class.getName());
lgr.log(Level.SEVERE, ex.getMessage(), ex);
}
}
Функция getCon
просто возвращает текущее соединение с базой данных.
Но это, по-видимому, не делает трюк. Есть предположения?
см редактировать мой ответ – Alnitak
@Alnitak Он работал! Спасибо: D –
FWIW, я бы использовал функцию 'useDatabase()' имя DB в качестве параметра, и только при успешном заполнении поля базы данных вашего класса. – Alnitak