2012-11-30 44 views
0

我對Java的世界頗爲陌生,而且我不太確定如何做到這一點。製作MySQL方法

我有一個MySQL類,它提取一個表就好了,並將其打印到控制檯。但是,我需要從另一個類做自定義的SQL查詢,我不知道如何做到這一點。任何人都可以幫忙嗎?

這裏的mysql的類:

import java.sql.*; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class mySQL { 

    public static void main(String[] args) { 

     Connection con = null; 
     PreparedStatement pst = null; 
     ResultSet rs = null; 

     String url = "jdbc:mysql://host:port/database"; 
     String user = "user"; 
     String password = "password"; 

     try { 

      con = DriverManager.getConnection(url, user, password); 
      pst = con.prepareStatement("SELECT * FROM NFT_users"); 
      rs = pst.executeQuery(); 
      con = DriverManager.getConnection(url, user, password); 

      while (rs.next()) { 
       System.out.print(rs.getInt(1)); 
       System.out.print(": "); 
       System.out.println(rs.getString(2)); 
      } 

     } catch (SQLException ex) { 
       Logger lgr = Logger.getLogger(mySQL.class.getName()); 
       lgr.log(Level.SEVERE, ex.getMessage(), ex); 

     } finally { 

      try { 
       if (rs != null) { 
        rs.close(); 
       } 
       if (pst != null) { 
        pst.close(); 
       } 
       if (con != null) { 
        con.close(); 
       } 

      } catch (SQLException ex) { 
       Logger lgr = Logger.getLogger(mySQL.class.getName()); 
       lgr.log(Level.WARNING, ex.getMessage(), ex); 
      } 
     } 
    } 
} 
+0

那麼問題是什麼?爲什麼你不能用自定義查詢做同樣的事情?轉到[JDBC教程](http://docs.oracle.com/javase/tutorial/jdbc/)以獲取更多信息。 –

+0

@Patric Reck:你能進一步解釋你想做什麼嗎? – ninnemannk

+0

我正在嘗試進行一個小聊天,在那裏我有我的主課聊天。 在此我需要爲每個用戶做一個循環創建一個用戶對象並分配一些值。 我不知道如何使該引用和調用(迄今爲止不存在的?)方法來執行此操作。 –

回答

1

你的問題不是關於SQL,它是關於軟件設計。

考慮一個類,它的整個存在是爲了讓您訪問數據。它會完成所有的連接(private void loadConnection),然後有如ArrayList<User> getUsers()的方法。

然後,當您需要清單User時,您只需執行myDatabaseObject.getUsers()或在另一種情況下執行myDatabaseObject.getOtherObjects()。但是其餘的代碼都不會知道有關SQL或連接到數據庫的任何信息。


如果你想做的不是非常簡單的數據庫訪問,你應該考慮學習HibernateWikipedia link.如果你曾經閱讀過這個網站上的問題,並想知道Hibernate是什麼,那麼它就是這樣做的工具。至於自己如何做到這一點,只需將連接代碼放在構造函數中,將連接保存到一個字段,並讓上述方法執行查詢(最好使用PreparedStatement)。

+1

我只是稍微擴大一點,創建一個處理連接信息的父類。基類(如果您願意的話)(BaseSQLObject),然後爲將擴展此基礎對象的每個表創建一個對象。子對象會知道該表的所有sql以及如何執行它。您應該也可以創建一個接口來執行某些基本方法。 – ninnemannk

+0

@ninn:你當然是對的,但寶寶踏步的人 – durron597

+0

你說得對,這是我需要做的。然而,我不知道該如何解決這個問題,而且我也找不到任何有關該主題的教程 –