Я пытаюсь выполнить sql-запрос с использованием подготовленного оператора, но он возвращает пустое значение

#java #sql #oracle

#java #sql #Oracle

Вопрос:

 String sql = "select s_upload_file.NEXTVAL from dual" ;
PreparedStatement ps = con.preparedStatement(sql);
ResultSet rs = ps.executeQuery();
  

При выполнении этого я получаю набор результатов как пустой. В чем проблема с этим..

Комментарии:

1. что такое s_upload_file.nextvalue ?

2. Upload_file — это имя таблицы, и в нем есть столбец с порядковым номером, здесь я пытаюсь получить к нему доступ с помощью псевдоколонки .. извините, что я отредактировал его Nextval

3. Он выполняется напрямую… Не могли бы вы предложить способ найти следующее значение столбца порядкового номера в базе данных?

4. Вы прошли через rs.next() ?

5. Благодаря hasitha я получил значение при выполнении итерации через RS.next()..

Ответ №1:

Уже есть много ответов, но я постараюсь дать вам полный объем ответа.

 public static Connection getConnection_Test() throws Exception{

    try{

        String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/Database_Name";
        String username = "root";
        String pass = "";
        Class.forName(driver);

        Connection conn = DriverManager.getConnection(url, username, pass);
        System.out.println("Success!");

        String query = "SELECT S_UPLOAD_FILE.NEXTVAL from dual n ";

        PreparedStatement st = conn.prepareStatement(query);
        ResultSet rs = st.executeQuery();
        while(rs.next()){
            int NEXTVALUE = rs.getInt(1);
            System.out.println(NEXTVALUE);

        }
        rs.close();
        st.close();    

        return conn;
    }catch (Exception e){
        System.out.println(e);
    }


    return null;

}
  

Ответ №2:

вы должны попробовать что-то вроде этого,

  String sql = "select s_upload_file.NEXTVAL from dual" ;
 PreparedStatement ps = con.prepareStatement(sql);
 ResultSet rs = ps.executeQuery();
 if (rs.next())
 {
   int var2= rs.getInt(1);
 }
  

Ответ №3:

Вы можете получить значения через rs.next() ,

 String sql = "select s_upload_file.NEXTVAL from dual";
PreparedStatement pst = conn.prepareStatement(sql);
synchronized( this ) {
   ResultSet rs = pst.executeQuery();
   if(rs.next())
     long nxtVal = rs.getLong(1);
}
  

Ответ №4:

Вы пробовали что-то подобное?

 /* not mandatory but give an alias to your column in select */
if(rs.next()){
   int nextval = rs.getInt(1);
    System.out.println(nextval)
}