【问题标题】:Java+MySQL with JDBC connector mistake带有 JDBC 连接器的 Java+MySQL 错误
【发布时间】:2012-04-08 06:24:33
【问题描述】:

我正在尝试使用 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);出现错误“类型不匹配:无法从布尔值转换为结果集”。 我不明白问题是什么。需要一些帮助。

【问题讨论】:

  • 感谢您的帮助。

标签: java mysql jdbc


【解决方案1】:
stmt.execute(query); 

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

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

【讨论】:

    【解决方案2】:

    首先,这与 MySQL 无关 - 您没有达到运行代码的程度,而且您的代码都没有处理 MySQL 特定的类型。 (我的意思是,您可能会将 MySQL jar 文件放在正确的位置,也可能没有;此错误不是由此引起的。)

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

    你想要 executeQuery(String) 代替 - 或者你可以调用 execute(String),如果它返回 true,调用 getResultSet

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        你的代码应该是这样的:

        ResultSet rs = stmt.executeQuery(query);
        

        【讨论】:

          猜你喜欢
          • 2014-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-17
          相关资源
          最近更新 更多