带有JDBC连接器的Java + MySQL错误

时间:2012-03-23 17:09:28

标签: java mysql jdbc

我正在尝试使用JDBC连接器连接Java和MySQL。所以,我从official cite下载了连接器,将其添加到类路径并添加到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 个答案:

答案 0 :(得分:4)

Statement#execute方法返回boolean。您正在寻找Statement#executeQuery方法,该方法返回ResultSet

您的代码应该是这样的:

ResultSet rs = stmt.executeQuery(query);

答案 1 :(得分:1)

首先,这与MySQL无关 - 你没有得到运行代码,你的代码都没有处理特定于MySQL的类型。 (我的观点是你可能会或者可能没有MySQL jar文件在正确的地方;这个错误不是由于这个。)

如果查看Statement.execute(String)的文档,您会看到返回boolean,而不是ResultSet。这就是你得到编译时错误的原因。

您想要executeQuery(String) - 或 可以},如果它返回true,请致电execute(String)

答案 2 :(得分:0)

您需要使用executeQuery(String sql)方法

有关提供的方法的详细信息,请参阅javadocs

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

答案 3 :(得分:0)

stmt.execute(query); 

返回boolean而不是ResultSet。你可以得到 结果集使用stmt.executeQuery()方法进行查询而不是 修改数据库中的数据。

如果要修改数据库中的数据,请使用executeUpdate()方法,该方法将返回一个整数,以指示数据是否已被修改。