ReadTableConnectionInfo
などのテーブルに関する詳細を含むという名前のクラスがtableName
ありますcolumns
。からの列値を使用してランダム選択 SQL を生成することになっているマルチスレッド コードを作成しましたtable.getColumns()
。
table1に次のような8つの列があるとします-
ID
CREATION
DATE
ACCOUNT
ADVERTISE
SELLERS
GEOGRAPHIC
DEMOGRAPHIC
以下は、列を使用してランダム選択SQLを生成しようとしているコードです。これtable
がReadTableConnectionInfo
オブジェクトです。
@Override
public void run() {
while (System.currentTimeMillis() <= 30 minutes) {
final String selectSql = generateRandomSQL(table);
preparedStatement = entry.getValue().prepareCall(selectSql);
preparedStatement.setString(id);
rs = preparedStatement.executeQuery();
}
}
/**
* A simple method that will construct the SQL
* and return back
* @param columns
* @return sql
*/
private String generateRandomSQL(ReadTableConnectionInfo table) {
/* generate random columns from
* `table.getColumns`, not sure how to make that
*/
final String sql = "SELECT ID, CREATION_DATE, LAST_MODIFIED_DATE, from "+table.getTableName+" where id = ?";
return sql;
}
以下は、ReadTableConncectionInfo class
tableNameとを保持する私のものですcolumns list
public class ReadTableConnectionInfo {
public String tableName;
public ArrayList<String> columns;
public ArrayList<String> getColumns() {
return columns;
}
public void setColumns(ArrayList<String> columns) {
this.columns = columns;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
}
generateRandomSQL
ここで、リストからメソッドでランダム選択 SQL を生成する必要がありますtable.getColumns()
。私のすべてのSELECT sqlでは、私は常に持っていますがID, CREATION and DATE
、それとは別に、それはランダムでなければなりません
サンプル SQL の例 -
`SELECT ID, CREATION, DATE, ACCOUNT from table1 where id = ?`
`SELECT ID, CREATION, DATE, ACCOUNT, ADVERTISE from table1 where id = ?`
`SELECT ID, CREATION, DATE, ACCOUNT, SELLERS from table1 where id = ?`
`SELECT ID, CREATION, DATE, GEOGRAPHIC, DEMOGRAPHIC, ADVERTISE from table1 where id = ?`
`Other possible permutations`
ID、CREATION、およびDATEを常に使用してランダムなSELECT SQLを構築するのを手伝ってくれる人はいますか? どんな提案でも大いに役立ちます。