2015-09-08 27 views
1

幾年前,我在Java中創建了一個程序來管理實驗室。主要目標是快速訪問人員數據。每個添加到系統中的人都有一個名稱,一個id和兩個「2維字符串數組String [] []」,每列4列和6行。如何將2d字符串數組持久化到sql數據庫中?

每列是該人的公式。所以一個人最多有8個公式,每個公式有6個字符串。

這些目的通過一個ArrayList在具有更多的功能(系統類別)的對象的控制,這樣的陣列內搜索,更新刪除等...

該技術我使用用於存儲所述系統類和對象arraylist將數據序列化到文件中。每當對象發生變化時,整個系統類就會被序列化。現在完全沒有效率,因爲裏面有3000人。該文件大約2 MB。

我需要擺脫這些保存數據的方式,我正在考慮使用數據庫,以便更好地搜索並讓其他客戶端訪問相同的數據。 我面臨的問題是如何爲每個人保存兩個2d字符串數組。我應該創建一個由8個字符串組成的數組,並將每個數組連接起來表示一個列嗎?我應該在數據庫中爲多對多關係創建2個額外的表嗎?

謝謝。

BTW;我打算使用JavaFX來製作新版本的程序。


這是我想要堅持的類。

package ingresodefichas; 

import java.io.*; 

public class Ficha implements Serializable { 

    private String nombre; 
    private String apellido; 
    private String apellido2; 

    private int id; 


    private String tabla1[][]; 
    private String tabla2[][]; 

    public Ficha() { 
     this.setNombre("sin nombre"); 
     this.setApellido("sin Apellido"); 
     this.setTabla1(new String[6][4]); 
     this.setTabla2(new String[6][4]); 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getNombre() { 
     return nombre; 
    } 

    public void setNombre(String nombre) { 
     this.nombre = nombre; 
    } 
     public String getApellido() { 
     return apellido; 
    } 

    public void setApellido(String apellido) { 
     this.apellido = apellido; 
    } 

    public String getApellido2() { 
     return apellido2; 
    } 

    public void setApellido2(String apellido2) { 
     this.apellido2 = apellido2; 
    } 


    public String[][] getTabla1() { 
     return tabla1; 
    } 

    public void setTabla1(String[][] tabla1) { 
     this.tabla1 = tabla1; 
    } 

    public String[][] getTabla2() { 
     return tabla2; 
    } 

    public void setTabla2(String[][] tabla2) { 
     this.tabla2 = tabla2; 
    } 

    public String toString(){ 
     return this.getId() + " - " + this.getNombre() + " " + this.getApellido() + " " + this.getApellido2(); 
    } 

} 
+0

只是讓你知道我做了什麼來解決這個問題。 我爲系統中的每個人創建了2個字符串,每個字符串都包含arraylis的json表示。 我使用了谷歌的Gson庫。 它爲我節省了很多時間。 也使用了MySQL服務器。 和JavaFX作爲GUI。 謝謝@ankhzet, – HoNgOuRu

+0

@GreyBeardedGeek我也跟着你的建議關於GSON庫。 謝謝。 – HoNgOuRu

+0

很高興爲你效勞=) – ankhzet

回答

3

如果在String[][]表中的每個字符串是獨一無二的,比數據分離到另一個表沒有好處,正常化的企圖只會造成額外的不利的邏輯,比如獲取由關係串並確保,即相關的字符串將被移除在人身上。

爲了將整個表保存到數據庫列,您可以像往常一樣序列化/反序列化它們(字符串表)。

如果您提供了兩個人的序列化字符串表與公式的例子的問題,那麼SO社區將能夠給出更適合於情況的答案。

+0

感謝您的回答。你的意思是序列化2darrays?成一個blob? – HoNgOuRu

+1

'blob','varchar','text' ...沒有太大區別(至少,'text'允許您在任何數據庫客戶端中預覽列數據......無論如何,如果需要的話)。 – ankhzet

+1

最簡單的事情可能是使用GSon將數組序列化爲JSON,並將其存儲在ta文本列中, – GreyBeardedGeek

相關問題