2012-03-23 101 views
1

我试图用JDBC连接器连接Java和MySQL。所以,我从official cite下载了连接器,将它添加到classpath并添加到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 
     } 
     } 
    } 

但在字符串:结果集RS = stmt.execute(查询);有一个错误“Type mismatch:can not convert from boolean to ResultSet”。 我不明白是什么问题。需要一些帮助。

+0

谢谢你的帮助。 – 2012-03-23 17:27:29

回答

4

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

您的代码应该是这样的:

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

+1,你打败我吧! – 2012-03-23 17:16:34

1

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

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

你想executeQuery(String)代替 - 或者你可能呼叫execute(String),如果返回true,则调用getResultSet

+0

+1提问与标题无关! – 2012-03-23 17:19:54

0
stmt.execute(query); 

返回布尔没有结果集。您可以通过使用stmt.executeQuery()方法查询不会 修改数据库中的数据得到 的ResultSet。

如果要修改数据库中的数据使用executeUpdate()方法,它会返回一个整数,指示数据是否已经被修改过。