Convert Resultset to String array

65,783

Solution 1

to get the desired output:

replace these lines

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]);
    }
}

by

String arr = null;
while (rs.next()) {
    String em = rs.getString("EM_ID");
    arr = em.replace("\n", ",");
    System.out.println(arr);
}

Solution 2

System.out.println(arr[i]);

Instead use:

System.out.print(arr[i] + ",");

Solution 3

If i understand correctly You want to see the output in one line with comma as a separator. Then instead of

System.out.println(arr[i]);

Try

System.out.print(arr[i]+",");

and remove last comma somehow.

Solution 4

you do not need arr = em.split("\n"); since you are looping through each row (assuming that 1 row = 1 email address ) you just need this :

        ArrayList<String> arr = new ArrayList<String>();
        while (rs.next()) {
           arr.add(rs.getString("EM_ID"));
           System.out.println(arr.get(arr.size()-1));
        }

Solution 5

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

Btw you may should use BCC instead of CC in terms of privacy....

Also you should never use SELECT * FROM foo; Better use SELECT EM_ID FROM foo; This gives you a significant Performance increase in a huge Table, since the ResultSet just consists of the information you really need and use...

Share:
65,783
Stanley Mungai
Author by

Stanley Mungai

Give a beggar a Fish, Feed him for a day. Teach Him how to Fish, Feed Him for a Lifetime.

Updated on July 09, 2022

Comments

  • Stanley Mungai
    Stanley Mungai almost 2 years

    I need to Convert My result set to an array of Strings. I am reading Email addresses from the database and I need to be able to send them like:

    message.addRecipient(Message.RecipientType.CC, "[email protected],[email protected],[email protected]");
    

    Here is My code for reading the Email addresses:

    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 is:

    [email protected]
    [email protected]
    

    I need it like this:

    [email protected],[email protected]
    

    I am using Oracle 11g.

  • Sergey Kalinichenko
    Sergey Kalinichenko about 11 years
    +1 That seems to be the right approach: rather than fixing the consequences of a split, avoid splitting in the first place! Don't forget to tell the OP that arr is no longer an array of strings, but a single string that he wants.
  • Terraego
    Terraego about 11 years
    your array is not initialized, and there is now way to retrieve the number of rows returned without iterating over all of them.
  • Logan Wlv
    Logan Wlv about 6 years
    @codeMan depending of the query, isn't it dangerous to use String, it mights exceed string max length ?