2015-09-05 4 views
0

Я не понимаю, почему моя переменная состояние не может быть разрешено.java ResultSet и проблема выпуска

Я нахожусь в проекте 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

Объявите «государство» вне этого конструктора.

Connection conn = null; 
Statement state = null; 

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