0

Javaに文字列データ型の隣接行列があります。

String[][] A;

隣接行列AをMySQLテーブルに読み込みたい。問題は、必要な行/列の数がわからないことです(また、すべての列を作成する必要もありません)。この問題を解決する秘訣は、その場で列を作成することだと思います。「オンザフライ」で列を追加するにはどうすればよいですか?

その場で列を追加できるようになると、マトリックスを行ごとに読み取ることができます。

  1. データをマトリックスとして表示できるようにしたい。

すべての助けは大歓迎です!

4

2 に答える 2

3

可変列を設定する手間をかける代わりに、単純なデータベーステーブルAを作成します。

row     integer
col     integer
content varchar

これにより、空のエントリを簡単に回避できる柔軟性が得られ、配列アイテムごとに1つのデータベーステーブル行があります。

2つのオプションがあります。

  1. nullを含む配列の要素ごとに1つのデータベース行を生成する、または
  2. nullではない要素ごとに1つのデータベース行を生成します。

オプション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の場合、行、列にある要求された要素のコンテンツは次のようになります。

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は、文字列配列の固定列数です。

于 2012-12-27T22:41:16.617 に答える
0

たぶん、テーブルに列を追加することができます。テーブルの名前が「MYTABLE」であると想像してください。SQLServerでは、次のように記述できます。

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 に答える