結果セットを文字列の配列に変換する必要があります。私はデータベースからメールアドレスを読んでいて、次のように送信できるようにする必要があります。
message.addRecipient(Message.RecipientType.CC, "[email protected],[email protected],[email protected]");
メールアドレスを読み取るための私のコードは次のとおりです。
import Java.sql.Connection;
import Java.sql.DriverManager;
import Java.sql.ResultSet;
import Java.sql.Statement;
public class Test {
public static void main(String[] args) {
Connection conn = null;
String iphost = "localhost";
String dbsid = "ASKDB";
String username = "ASKUL";
String password = "askul";
try {
Class.forName("Oracle.jdbc.driver.OracleDriver");
String sql = "SELECT * FROM EMAIL";
conn = DriverManager.getConnection("jdbc:Oracle:thin:@" + iphost + ":1521:" + dbsid, username, password);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
String[] arr = null;
while (rs.next()) {
String em = rs.getString("EM_ID");
arr = em.split("\n");
for (int i =0; i < arr.length; i++){
System.out.println(arr[i]);
}
}
} catch (Exception asd) {
System.out.println(asd);
}
}
}
MyOutputは次のとおりです。
[email protected]
[email protected]
私はこのようにそれを必要とします:
[email protected],[email protected]
Oracle 11gを使用しています。
必要な出力を取得するには:
これらの行を置き換える
String[] arr = null;
while (rs.next()) {
String em = rs.getString("EM_ID");
arr = em.split("\n");
for (int i =0; i < arr.length; i++){
System.out.println(arr[i]);
}
}
沿って
String arr = null;
while (rs.next()) {
String em = rs.getString("EM_ID");
arr = em.replace("\n", ",");
System.out.println(arr);
}
System.out.println(arr[i]);
代わりに次を使用してください:
System.out.print(arr[i] + ",");
import Java.util.List;
import Java.util.ArrayList;
List<String> listEmail = new ArrayList<String>();
while (rs.next()) {
listEmail.add(rs.getString("EM_ID"));
}
//listEmail,toString() will look like this: [[email protected], [email protected]]
//So lets replace the brackets and remove the whitspaces
//You can do this in less steps if you want:
String result = listEmail.toString();
result = result.replace("[", "\"");
result = result.replace("]", "\"");
result = result.replace(" ", "");
//your result: "[email protected],[email protected]"
//If the spaces are e problem just use the string function to remove them
ところで、プライバシーの観点から、CCではなくBCCを使用する必要があります。
また、SELECT * FROM fooを使用しないでください。 SELECT EM_ID FROM fooを使用することをお勧めします。 ResultSetは実際に必要で使用する情報のみで構成されているため、巨大なテーブルのパフォーマンスが大幅に向上します...
各行をループしているので、arr = em.split("\n");
は必要ありません(1行= 1つの電子メールアドレスであると想定)。
ArrayList<String> arr = new ArrayList<String>();
while (rs.next()) {
arr.add(rs.getString("EM_ID"));
System.out.println(arr.get(arr.size()-1));
}
私が正しく理解している場合は、区切り文字としてカンマを使用して出力を1行で表示する必要があります。その後の代わりに
System.out.println(arr[i]);
試す
System.out.print(arr[i]+",");
そして、どういうわけか最後のコンマを削除します。