2012-03-23 109 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()方法,它會返回一個整數,指示數據是否已經被修改過。