2012-12-27 55 views
0

我在Java中的String數據類型的鄰接矩陣:鄰接矩陣從Java到SQL

String[][] A; 

我想讀我的鄰接矩陣A爲MySQL表。問題是我永遠不知道需要多少行/列(我也不想創建所有列)。我認爲解決這個問題的技巧是即時創建列。如何添加列「在飛行中?」

一旦我可以實時添加列,我就可以逐行讀取矩陣。

  1. 我希望能夠將數據視爲矩陣。

非常感謝所有幫助!

回答

3

而是通過設置變量列的麻煩去的,創建一個簡單的數據庫表:

row  integer 
col  integer 
content varchar 

這使您可以靈活地避免空條目,你有一個數據庫錶行的每個數組項目。

你有兩個選擇:

  1. 生成一個數據庫行的陣列,包含空值的每一個元素,或
  2. 生成一個數據庫行每一個不爲空的元素。

有關選項1中,該代碼將提供任何元件:

private String getElement(int row, int col) { 
    String result = null; 
    try { 
     if(rs.absolute(row*colNumber+col+1)) 
      result=rs.getString("content"); 
    } catch (SQLException ex) { 
     System.out.println(ex.getMessage()); 
    } 
    return result; 
} 

有關選項2中,在排所請求的元素的含量,列是發現這樣的:

​​

很明顯,選項1更快地訪問元素。選項2節省數據庫空間。 PS:如果你有一個長度可變的數組數組,那麼選項1將不起作用。
colNumber是String數組的固定列數。

+1

這顯然是正確的解決方案。儘可能避免動態更改表格模式。 –

+0

+1我非常同意這一點。 –

+0

我看到這是如何更高效,是否有一種方法來查詢這種格式的數據,以便我可以物理看待我的數據爲矩陣?我真的希望能夠以n×n的矩陣物理地查看數據。 – CodeKingPlusPlus

0

也許你可以添加列到表中。試想一下,你的表被命名爲「MYTABLE」: 在SQL Server中,你可以這樣寫:

ALTER TABLE MYTABLE ADD COLUMN COLX varchar(255); 

其中X是你需要的列數。

這個選項,可以讓你在你的表中添加列,但也許解決方案是創建一個新的表落下前一個:

DROP TABLE MYTABLE; 
CREATE TABLE MYTABLE(COL1 varchar(255), COL2 varchar(255)...); 

讓我知道,如果它是你的問題。 謝謝。