2012-03-23 2 views
1

Я пытаюсь подключить Java и MySQL к JDBC-коннектору. Итак, я загрузил коннектор из official cite, добавил его в путь к классам и добавил в библиотеки eclipse. Теперь я использую ниже кодJava + MySQL с ошибкой соединителя JDBC

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 


    public class LocalhostDBConnection 
    { 
     LocalhostDBConnection() 
     { 
     Connection connection; 
     try { 
      // Название драйвера 
      String driverName = "com.mysql.jdbc.Driver"; 

      Class.forName(driverName); 

      // Create a connection to the database 
      String serverName = "localhost"; 
      String mydatabase = "AvtoKovriki"; 
      String url = "jdbc:mysql://" + serverName + "/" + mydatabase; 
      String username = "root"; 
      String password = ""; 

      connection = DriverManager.getConnection(url, username, password); 
      System.out.println("is connect to DB" + connection); 

      String query = "Select * FROM users"; 
      Statement stmt = connection.createStatement(); 

      ResultSet rs = stmt.execute(query); 
      String dbtime; 
      while (rs.next()) 
      { 
       dbtime = rs.getString(1); 
       System.out.println(dbtime); 
      } // end while 

      connection.close(); 
     } // end try 
     catch (ClassNotFoundException e) 
     { 
      e.printStackTrace(); 
      // Could not find the database driver 
     } catch (SQLException e) 
     { 
      e.printStackTrace(); 
      // Could not connect to the database 
     } 
     } 
    } 

Но в строке: ResultSet Rs = stmt.execute (запрос); есть ошибка "Несоответствие типов: невозможно преобразовать из булевых в ResultSet". Я не понимаю, в чем проблема. Нужна помощь.

+0

Благодарим за помощь. –

ответ

4

Метод Statement#execute возвращает boolean. Вы ищете метод Statement#executeQuery, который возвращает ResultSet.

Ваш код должен выглядеть так:

ResultSet rs = stmt.executeQuery(query); 
+0

+1, ты избил меня! –

1

Во-первых, это не имеет ничего общего с MySQL - вы не получаете, как далеко, как работает код, и ни один из ваших кодов сделок с MySQL конкретных типы. (Могу сказать, что у вас может быть или не быть файла jar MySQL в нужном месте, эта ошибка не из-за этого.)

Если вы посмотрите на документацию для Statement.execute(String), вы увидите, что это возвращает boolean , не ResultSet. Вот почему вы получаете ошибку времени компиляции.

Вы хотите executeQuery(String) вместо этого - или вы могли вызов execute(String), и если она возвращает истину, вызовите getResultSet.

+0

+1 для упоминания о несоответствии названия вопроса! –

0
stmt.execute(query); 

возвращает булево не ResultSet. Вы можете получить ResultSet с помощью метода stmt.executeQuery() для запросов, которые не будут изменить данные в базе данных.

Если вы хотите изменить данные в своей базе данных, используйте метод executeUpdate(), который вернет целое число, чтобы указать, были ли данные изменены или нет.