可変列を設定する手間をかける代わりに、単純なデータベーステーブルAを作成します。
row integer
col integer
content varchar
これにより、空のエントリを簡単に回避できる柔軟性が得られ、配列アイテムごとに1つのデータベーステーブル行があります。
2つのオプションがあります。
- nullを含む配列の要素ごとに1つのデータベース行を生成する、または
- 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は、文字列配列の固定列数です。