我在 Java 中有一个字符串数据类型邻接矩阵:
String[][] A;
我想将我的邻接矩阵 A 读入 MySQL 表。问题是我永远不知道我需要多少行/列(我也不想创建所有列)。我认为解决这个问题的诀窍是动态创建列。如何“即时”添加列?
一旦我可以动态添加列,我就可以逐行读取矩阵。
- 我希望能够将数据视为矩阵。
非常感谢所有帮助!
我在 Java 中有一个字符串数据类型邻接矩阵:
String[][] A;
我想将我的邻接矩阵 A 读入 MySQL 表。问题是我永远不知道我需要多少行/列(我也不想创建所有列)。我认为解决这个问题的诀窍是动态创建列。如何“即时”添加列?
一旦我可以动态添加列,我就可以逐行读取矩阵。
非常感谢所有帮助!
与其费力设置变量列,不如创建一个简单的数据库表 A:
row integer
col integer
content varchar
这使您可以灵活地轻松避免空条目,并且每个数组项都有一个数据库表行。
你有两个选择:
对于选项 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,在 row,col 处的请求元素的内容是这样找到的:
private String getElement(int row, int col) {
String result = null;
String query = "SELECT * from A where row=? and col=?";
try {
PreparedStatement preps = con.prepareStatement(query);
preps.setInt(1, row);
preps.setInt(2, col);
preps.execute();
rs = preps.getResultSet();
if (rs.next()) {
result = rs.getString("content");
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return result;
}
很明显,选项 1 正在更快地访问元素。选项 2 节省数据库空间。
PS:如果你有一个不同长度的数组,选项 1 将不起作用。
colNumber是 String 数组的固定列数。
也许您可以在表格中添加列。假设您的表名为“MYTABLE”:在 SQL Server 中,您可以编写:
ALTER TABLE MYTABLE ADD COLUMN COLX varchar(255);
其中 X 是您需要的列数。
此选项将允许您在表上添加列,但也许解决方案是创建一个新表,下拉前一个表:
DROP TABLE MYTABLE;
CREATE TABLE MYTABLE(COL1 varchar(255), COL2 varchar(255)...);
让我知道这是否是你的问题。谢谢。