2015-07-04 2 views
2

Когда я делаю запрос к базе данных с помощью PreparedStatment, mysql добавляет «test». префикс к заголовку таблицы. Например ... Моя база данных метод запроса:MySQL меняет название таблицы

public static ResultSet databaseRequest(String request, String ... args){ 
    try{ 
     if(connection != null){ 
      PreparedStatement prepState = connection.prepareStatement(request); 
      for(int index = 0; index < args.length; index++){ 
       prepState.setString(index + 1, args[index]); 
      } 
      ResultSet result = prepState.executeQuery(); 
      return result; 
     } else { 
      throw new SQLException("Database connection had't been initialized"); 
     } 
    } catch(SQLException exception){ 
     System.out.println("Error while requesting database: " + exception.getSQLState()); 
     exception.printStackTrace(); 
    } 
    return null; 
} 

Как я использовать:

ResultSet result = DatabaseUtils.databaseRequest("SELECT * FROM `table`"); 

Ошибка - http://pastebin.com/Jxpi70Ea

Как я могу избежать этого?

+0

Hi. Я давно не пользовался jdbc, и я сомневаюсь, что это исправит проблему, но я считаю, что вам не нужны одинарные кавычки вокруг имени вашей таблицы. Одиночные кавычки иногда являются причиной разного поведения –

+0

Какое имя используемой базы данных, это 'test'? –

+0

Нет, это не 'test' –

ответ

0

В URL-адресе подключения вы должны указать исходную базу данных, используемую в качестве базы данных по умолчанию. Когда задана база данных по умолчанию, вы можете использовать имена таблиц без префикса базы данных.

Первоначальная база данных для подключения

Если база данных не указан, то соединение осуществляется с базой данных по умолчанию. В этом случае вызовите метод setCatalog() в экземпляре Connection или полностью укажите имена таблиц, используя имя базы данных (то есть SELECT dbname.tablename.colname FROM dbname.tablename...) в вашем SQL. Открытие соединения без указания используемой базы данных обычно полезно только при создании инструментов, которые работают с несколькими базами данных, например с менеджерами баз данных GUI.

Примечание

Всегда используйте метод Connection.setCatalog() указать нужную базу данных в приложениях JDBC, а не USE database заявления.

+0

Но мой URL-адрес для подключения к базе данных - это 'jdbc: mysql: // localhost: 3306/maindb',' maindb' - это моя база данных –

+1

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

+0

Я снова проверю свой код –