将MySQL表读入二维数组

时间:2015-02-24 12:18:31

标签: java mysql arrays

我有一个相当棘手的情况:

我的任务是设计一个应用程序,将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

问题是我无法将此文件读取到文件中,然后出于安全原因(包含实际的管理员帐户信息)访问应用程序。有人能想到一种有效的方法吗?

2 个答案:

答案 0 :(得分:2)

  

....进入二维字符串数组,可扩展为100

我认为你的意思是阵列最多可以包含100个元素。

如果是这样,那么一个解决方案就是预先分配一个大小为100 x 9的数组,然后查询并读取表行并填充数组。

第二种解决方案是查询,读取表行,填充数组列表,并使用List.toArray将列表内容提取到二维数组中。

最终解决方案是使用select ... count查找行数,并使用它来分配具有正确大小的二维数组。然后按照第一个解决方案继续进行。


然而,从O-O设计的角度来看,使用二维阵列是个坏主意。相反,您应该为每个9列声明一个带有字段的类,然后将表内容表示为该类的数组或列表。

答案 1 :(得分:1)

我为上述问题实施了以下设计:

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;
}