MySQL help.

Discussion in 'Plugin Development' started by MuisYa, Jul 31, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    MuisYa

    Oke, so i got this table filled with strings.
    How do i get a random String out of it.

    I can't get my head around it...

    Code:
    Code:
    PreparedStatement stat = con.prepareStatement("select * from advertiser");
                ResultSet resultset = stat.executeQuery();
               
                int max = 0;
                while (resultset.next()) max++;
                int i = random.nextInt(max) + 1;
               
                stat = con.prepareStatement("select " + i + " from advertiser");
                resultset = stat.executeQuery();
                finalstring = resultset.getString(1);
    Error:
    Code:
    15:47:44 [SEVERE] java.sql.SQLException: Before start of result set
    15:47:44 [SEVERE]      at com.mysql.jdbc.SQLError.createSQLException(SQLError.j
    ava:1073)
    15:47:44 [SEVERE]      at com.mysql.jdbc.SQLError.createSQLException(SQLError.j
    ava:987)
    15:47:44 [SEVERE]      at com.mysql.jdbc.SQLError.createSQLException(SQLError.j
    ava:982)
    15:47:44 [SEVERE]      at com.mysql.jdbc.SQLError.createSQLException(SQLError.j
    ava:927)
    15:47:44 [SEVERE]      at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImp
    l.java:841)
    15:47:44 [SEVERE]      at com.mysql.jdbc.ResultSetImpl.getStringInternal(Result
    SetImpl.java:5656)
    15:47:44 [SEVERE]      at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.
    java:5576)
    15:47:44 [SEVERE]      at frostedberry.advertiser.Database.getRandomMessage(Dat
    abase.java:35)
    15:47:44 [SEVERE]      at frostedberry.advertiser.tasks.Broadcast_Task.run(Broa
    dcast_Task.java:11)
    15:47:44 [SEVERE]      at org.bukkit.craftbukkit.scheduler.CraftWorker.run(Craf
    tWorker.java:34)
    15:47:44 [SEVERE]      at java.lang.Thread.run(Unknown Source)
     
  2. Offline

    jazpermo

    Make SQL return the random row:
    Code:
    select * from advertiser order by rand() limit 1
     
  3. Offline

    MuisYa

    Code:
    //This code
            String finalstring = "";
            try {
                PreparedStatement stat = con.prepareStatement("select * from advertiser order by rand() limit 1");
                ResultSet resultset = stat.executeQuery();
             
                finalstring = resultset.getString(1); //This is line nr 26
                System.out.println(finalstring);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return finalstring;
    Causes this error:

    Code:
    16:58:30 [SEVERE] java.sql.SQLException: Before start of result set
    16:58:30 [SEVERE]      at com.mysql.jdbc.SQLError.createSQLException(SQLError.j
    ava:1073)
    16:58:30 [SEVERE]      at com.mysql.jdbc.SQLError.createSQLException(SQLError.j
    ava:987)
    16:58:30 [SEVERE]      at com.mysql.jdbc.SQLError.createSQLException(SQLError.j
    ava:982)
    16:58:30 [SEVERE]      at com.mysql.jdbc.SQLError.createSQLException(SQLError.j
    ava:927)
    16:58:30 [SEVERE]      at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImp
    l.java:841)
    16:58:30 [SEVERE]      at com.mysql.jdbc.ResultSetImpl.getStringInternal(Result
    SetImpl.java:5656)
    16:58:30 [SEVERE]      at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.
    java:5576)
    16:58:30 [SEVERE]      at frostedberry.advertiser.Database.getRandomMessage(Dat
    abase.java:26)
    16:58:30 [SEVERE]      at frostedberry.advertiser.tasks.Broadcast_Task.run(Broa
    dcast_Task.java:11)
    16:58:30 [SEVERE]      at org.bukkit.craftbukkit.scheduler.CraftWorker.run(Craf
    tWorker.java:34)
    16:58:30 [SEVERE]      at java.lang.Thread.run(Unknown Source)
    16:58:30 [INFO]
    Lol that was stupid, i fixed it.
    For anyone interested in the final code.

    Code:
        public static String getRandomMessage() {
            String finalstring = "";
            try {
                PreparedStatement stat = con.prepareStatement("select * from advertiser order by rand() limit 1");
                ResultSet resultset = stat.executeQuery();
               
                resultset.next();
                finalstring = resultset.getString(1);
                System.out.println(finalstring);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return finalstring;
        }
    Thanks alot for the MySQL API jazpermo

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 27, 2016
Thread Status:
Not open for further replies.

Share This Page