【发布时间】:2025-11-28 10:55:01
【问题描述】:
我在 Java 中有一个字符串数据类型的邻接矩阵:
String[][] A;
我想将我的邻接矩阵 A 读入 MySQL 表。问题是我永远不知道我需要多少行/列(我也不想创建所有列)。我认为解决这个问题的诀窍是动态创建列。如何“即时”添加列?
一旦我可以动态添加列,我就可以逐行读取矩阵。
- 我希望能够以矩阵的形式查看数据。
非常感谢所有帮助!
【问题讨论】:
标签: java sql adjacency-matrix
我在 Java 中有一个字符串数据类型的邻接矩阵:
String[][] A;
我想将我的邻接矩阵 A 读入 MySQL 表。问题是我永远不知道我需要多少行/列(我也不想创建所有列)。我认为解决这个问题的诀窍是动态创建列。如何“即时”添加列?
一旦我可以动态添加列,我就可以逐行读取矩阵。
非常感谢所有帮助!
【问题讨论】:
标签: java sql adjacency-matrix
不用费心设置变量列,创建一个简单的数据库表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 是您的字符串数组的固定列数。
【讨论】:
也许您可以在表格中添加列。想象一下您的表名为“MYTABLE”: 在 SQL Server 中,您可以编写:
ALTER TABLE MYTABLE ADD COLUMN COLX varchar(255);
其中 X 是您需要的列数。
此选项将允许您在表格上添加列,但也许解决方案是创建一个新表格并下拉前一个表格:
DROP TABLE MYTABLE;
CREATE TABLE MYTABLE(COL1 varchar(255), COL2 varchar(255)...);
如果是你的问题,请告诉我。 谢谢。
【讨论】: