2015-02-24 34 views
0

我有一個相當棘手的局面:閱讀MySQL表爲二維數組

我一直負責設計將從一個MySQL數據庫讀取表的內容變成一個二維字符串數組的應用程序,可擴展到100

該表的模式是:

id = INT(11) 
Username = VARCHAR(100) 
Password = VARCHAR(45) 
UserType = VARCHAR(10) 
Full Name = VARCHAR(100) 
Age = INT(11) 
DOB = DATE 
Location = VARCHAR(100) 
Record_Created = DATETIME 

的問題是,我無法閱讀這一個文件,然後出於安全原因的應用程序(包含實際的管理員帳戶信息)。任何人都可以想到這樣做的有效方法嗎?

+0

哪些是兩個維度?你難道不能全部留在記憶裏嗎? – 2015-02-24 12:31:46

+0

應用程序必須從數據庫中讀取數據並對數組進行puppet操作。應用程序首先將數組作爲備份進行處理,然後在出現提示時將其上傳到表中 – 2015-02-24 12:42:38

+0

我認爲@Stephen是正確的 – 2015-02-24 12:44:59

回答

2

....變成一個二維字符串數組,可擴展到100

我認爲你的意思是數組最多可以有100個元素。

如果是這樣,則一種解決方案是預先分配大小爲100 x 9的數組,然後查詢並讀取錶行並填充數組。

第二種解決方案是查詢,讀取表格行,填充數組列表,並使用List.toArray將列表內容提取到2-D數組中。

最終的解決方案是使用select ... count來查找行數,並使用它來分配具有正確大小的2-D數組。然後按照第一個解決方案進行。


但是,從O-O設計的角度來看,使用2-D陣列是一個壞主意。相反,您應該爲9個列中的每一列聲明一個包含字段的類,然後將該表內容表示爲該類的數組或列表。

+0

嗯,我現在覺得智能現在大聲笑,不能要求更好的答案。 – 2015-02-24 12:46:00

+0

我希望我能舉個例子嗎?一天晚些時候,我的大腦想要一個午睡= / – 2015-02-24 16:38:18

0

我實現我的上述問題發表如下設計:

public static String[][] Table() throws SQLException 
{ 
    String[][] Table = null; 
    table = conn.createStatement(); 
    String sql = "select * from usersTable"; 
    ResultSet rs = table.executeQuery(sql); 
    rs.last(); 
    int rowNumb = rs.getRow(); 
    ResultSetMetaData rsmd = rs.getMetaData(); 
    int columnS = rsmd.getColumnCount(); 

    rs.beforeFirst(); 
    dbTable= new String[rowNumb][columnS]; 

    int i=0; 
    while(rs.next() && i<rowNumb && rowNumb<100) 
    { 
     for(int j=0;j<columnS;j++) 
     { 
      Table[i][j] = rs.getString(j+1); 
     } 
     i++; 
    } 
    return Table; 
}