2013-08-24 73 views
0

這是一個Java代碼,我在Eclipse中編寫從MySQL數據庫檢索信息..但編譯器給出錯誤,說conn不能解析爲類型..任何人都可以請告訴我,我可能會做什麼?Eclipse編譯器錯誤說連接變量不能解析到一個類型

import java.sql.*; 

public class plh { 

static Connection conn=null; 
static Statement s=null; 

public static void main(String[] args){ 


    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/wonkashop","root", ""); 
     String st= new String("select * from users;"); 
     s= new conn.createStatement(st);//ERROR.. why?? 

    } 
    catch (Exception e) { 
     System.out.println("Unable to connect to Database"); 
    } 
} 

} 

回答

1

從您的代碼行中刪除new關鍵字。你需要得到Statement爲:

s= conn.createStatement(); // createStatement doesn't take a String argument 

DriverManager.getConnection()已經返回Connection對象,您已通過該標識符conn引用,因此用它來獲取Statement

如果要傳遞sql查詢字符串,請使用PreparedStatement而不是Statement。 即Connection#prepareStatement(sql)

聲明:

final String st= "select * from users;"; 
Statement s = conn.createStatement(); 
ResultSet rs = stmt.executeQuery(st); 

的PreparedStatement:

final String st= "select * from users;"; 
PreparedStatement preparedStatement = conn.prepareStatement(st); 
ResultSet rs = preparedStatement.executeQuery(); 
0

改變這一行

s= new conn.createStatement(st);//ERROR.. why?? 

s= conn.createStatement(); 

Connection#createStatement

返回一個新的默認Statement對象。

0

只是conn.createStatement();。不要把new放在這裏,因爲你沒有實例化一個類。

您應該只在類的名稱前面寫上new,因爲它會創建該類的對象。但在這裏,conn不是類的名稱 - 它只是引用某個類的現有對象的變量的名稱。

在該行

s= new conn.createStatement(st);//ERROR.. why?? 

+0

FYI createStatement()不接受任何參數 – Prabhaker

+0

噢,謝謝。修復。 –

1

這裏沒有必要對新keyword

Class.forName("com.mysql.jdbc.Driver"); 
    conn = DriverManager.getConnection(credentials); 
    stmt = conn.createStatement(); 
    ResultSet rs = stmt.executeQuery(st); 
+0

這將導致編譯錯誤。此外* createStatement它已經返回一個對象,如果PreparedStatement。*也是錯的! – NINCOMPOOP

+0

@TheNewIdiot我不好,謝謝編輯。 –

0
try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/wonkashop", "root", ""); 
      st= "select * from users"; 
      s = conn.createStatement();// fixed 
      ResultSet rs = s.executeQuery(st); 
      while(rs.next()){ 
       //Retrieve by column name 
       int id = rs.getInt("id"); 
       String name = rs.getInt("name"); 

      } 

    } 
0

我有同樣的問題,而衝浪互聯網triying得到沒有成功的解決方案我把這些進口,它適用於我。

import java.sql.*; 
import java.sql.Connection; 
import java.sql.DatabaseMetaData; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 

我希望這可以幫助更多的人。

相關問題