Мне нужно запускать запрос "USE database" каждый раз, когда я вызываю новую функцию

Каждый раз, когда я вызываю новую функцию, она показывает ошибку, которая

"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;
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуйте добавить правильную настройку к вашему 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{
  .....

Это сработало. Но в чем была проблема? Это ошибка?

Dujana Abrar 18.05.2019 11:22

нет .. это не ошибка .. если вы не назначите правильное имя базы данных во время подключения, механизм базы данных не знает, какую базу данных использовать (или лучше использовать имя базы данных по умолчанию ..) в строке подключения, которую вы всегда должны назначать имя БД

ScaisEdge 18.05.2019 11:24

Но в функции InitializeData() я использовал запрос «ИСПОЛЬЗУЙТЕ данные голосования».

Dujana Abrar 18.05.2019 11:38

USE не устанавливает базу данных, это временная настройка, действительная только для одного запроса.. поэтому, как было предложено ранее, вы всегда должны назначать имя базы данных для вашей рабочей базы данных в строке подключения

ScaisEdge 18.05.2019 11:41

@scaisEdge USE ... это временная настройка, действительная только для одного запроса ... разве вы не имеете в виду только один связь? «Утверждение USE db_name указывает MySQL использовать базу данных db_name в качестве базы данных по умолчанию (текущей) для последующих операторов. База данных остается по умолчанию до конца сеанса или до выполнения другого оператора USE».

Michael - sqlbot 19.05.2019 01:01

Другие вопросы по теме