Java + MySQL с ошибкой коннектора JDBC - PullRequest
1 голос
/ 23 марта 2012

Я пытаюсь соединить Java и MySQL с соединителем JDBC. Итак, я скачал соединитель с Официальный сайт , добавил его в classpath и добавил в библиотеки eclipse. Теперь я использую код ниже

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 (query); есть ошибка «Несоответствие типов: невозможно преобразовать логическое значение в ResultSet». Я не могу понять, в чем проблема. Нужна помощь.

Ответы [ 4 ]

4 голосов
/ 23 марта 2012

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

Ваш код должен выглядеть следующим образом:

ResultSet rs = stmt.executeQuery(query);
1 голос
/ 23 марта 2012

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

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

Вы хотите вместо executeQuery(String) - или вы могли бы позвонить execute(String), и, если он вернул true, позвоните getResultSet.

0 голосов
/ 24 марта 2012
stmt.execute(query); 

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

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

0 голосов
/ 23 марта 2012

Вам необходимо использовать executeQuery(String sql) метод

см. Javadocs для более подробной информации о предоставляемых методах

http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...