Каждый раз, когда я вызываю новую функцию, она показывает ошибку, которая
"No database is selected".
Раньше такого не было, приходилось звонить "USE database"
только один раз.
Я заменил DriverManager на MySqlDataSource.
Я запускаю "USE database"
запрос при запуске программы, вызывая InitializeData();
public class Database {
public static MysqlDataSource dataSource;
static void InitializeData()
{
dataSource = new MysqlDataSource();
dataSource.setUser("root");
dataSource.setPassword("zxcvbnm@123");
try{
Connection con = Main.getConnection();
Statement existence = con.createStatement();
boolean q1 = existence.execute("CREATE DATABASE IF NOT EXISTS votingdata");
Statement st = con.createStatement();
st.execute("USE votingdata");
...........................................continue.........
Это функция Main.getConnection()
public static Connection getConnection(){
Connection con=null;
try {
con = Database.dataSource.getConnection();
}
catch(SQLException e){
System.out.print("Connection lost "+e.getMessage());
}
return con;
попробуйте добавить правильную настройку к вашему dbname
dataSource.setDatabaseName("YOUR_DB__NAME");
-
static void InitializeData()
{
dataSource = new MysqlDataSource();
dataSource.setUser("root");
dataSource.setPassword("zxcvbnm@123");
dataSource.setDatabaseName("YOUR_DB__NAME");
try{
.....
нет .. это не ошибка .. если вы не назначите правильное имя базы данных во время подключения, механизм базы данных не знает, какую базу данных использовать (или лучше использовать имя базы данных по умолчанию ..) в строке подключения, которую вы всегда должны назначать имя БД
Но в функции InitializeData() я использовал запрос «ИСПОЛЬЗУЙТЕ данные голосования».
USE не устанавливает базу данных, это временная настройка, действительная только для одного запроса.. поэтому, как было предложено ранее, вы всегда должны назначать имя базы данных для вашей рабочей базы данных в строке подключения
@scaisEdge USE
... это временная настройка, действительная только для одного запроса ... разве вы не имеете в виду только один связь? «Утверждение USE db_name
указывает MySQL использовать базу данных db_name в качестве базы данных по умолчанию (текущей) для последующих операторов. База данных остается по умолчанию до конца сеанса или до выполнения другого оператора USE».
Это сработало. Но в чем была проблема? Это ошибка?