0

我在 Java 中有一个字符串数据类型邻接矩阵:

String[][] A;

我想将我的邻接矩阵 A 读入 MySQL 表。问题是我永远不知道我需要多少行/列(我也不想创建所有列)。我认为解决这个问题的诀窍是动态创建列。如何“即时”添加列?

一旦我可以动态添加列,我就可以逐行读取矩阵。

  1. 我希望能够将数据视为矩阵。

非常感谢所有帮助!

4

2 回答 2

3

与其费力设置变量列,不如创建一个简单的数据库表 A:

row     integer
col     integer
content varchar

这使您可以灵活地轻松避免空条目,并且每个数组项都有一个数据库表行。

你有两个选择:

  1. 为数组的每个元素(包括空值)生成一个数据库行,或
  2. 为每个不为空的元素生成一个数据库行。

对于选项 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 数组的固定列数。

于 2012-12-27T22:41:16.617 回答
0

也许您可以在表格中添加列。假设您的表名为“MYTABLE”:在 SQL Server 中,您可以编写:

ALTER TABLE MYTABLE ADD COLUMN COLX varchar(255);

其中 X 是您需要的列数。

此选项将允许您在表上添加列,但也许解决方案是创建一个新表,下拉前一个表:

DROP TABLE MYTABLE;
CREATE TABLE MYTABLE(COL1 varchar(255), COL2 varchar(255)...);

让我知道这是否是你的问题。谢谢。

于 2012-12-27T22:42:19.187 回答