2015-09-05 71 views
0

我不明白爲什麼我的變量狀態無法解析。java結果集和語句問題

我在一個java的Mysql項目。

下面是命令類代碼:

import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import java.sql.SQLException; 
import java.sql.Statement; 


public class Commands { 

    public Commands() throws SQLException{ 
     Connection conn = DbConn.getInstance(); 
     Statement state = conn.createStatement(); 
    } 

    public String getList(){ 
     System.out.println("Here is a List of our Products:"); 
     // Get list from db 
     ResultSet result = state.executeQuery("SELECT * FROM products"); 
     ResultSetMetaData resultMeta = result.getMetaData(); 
     // Display the List 

     System.out.println("List displayed"); 
     return null; 
    } 
} 

這裏是DbConn類代碼:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 


public class DbConn { 
     private static String url = "jdbc:mysql://localhost:3306/myDB"; 
     private static String user = "root"; 
     private static String passwd = ""; 
     private static Connection connect; 

     // create new instance if not exists 
     public static Connection getInstance(){ 
      if(connect == null){ 
       try { 
        connect = DriverManager.getConnection(url, user, passwd); 
       } catch (SQLException e) { 
        e.printStackTrace(); 
       } 
      }  
      return connect; 
     } 
} 

我的代碼還沒有完成,但消息來在這條線:

ResultSet result = state.executeQuery("SELECT * FROM products"); 

我的Eclipse編輯器說這條消息狀態無法解析

任何想法?

+0

'state'是構造函數'commands'中的局部變量,無法在'getList'方法中訪問 – Blip

回答

0

這是一個範圍問題。你在這裏定義變量

public Commands() throws SQLException{ 
    Connection conn = DbConn.getInstance(); 
    Statement state = conn.createStatement(); 
} 

而這是變量唯一可見的地方 - 在構造函數中。在類中定義它並在構造函數中初始化它:

private Connection conn = null; 
private Statement state = null; 

public Commands() throws SQLException{ 
    conn = DbConn.getInstance(); 
    state = conn.createStatement(); 
} 
0

在該構造函數外聲明「State」。

Connection conn = null; 
Statement state = null; 

public Commands() throws SQLException{ 
    conn = DbConn.getInstance(); 
    state = conn.createStatement(); 
}