我有一个相当棘手的情况:
我的任务是设计一个应用程序,将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 :(得分: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;
}