2016-04-20 3 views
0

Я пытаюсь получить последний идентификатор из MySQL и присвоить значение строке a.Получить последний id из MySQL

У меня есть таблица admin с колонкой adminID.

adminAPI api= new adminAPI(); 
       try { 
        String id= api.selectLastID(); 
        System.out.println(id); 
       } catch (Exception e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 

adminAPI

public String selectLastID() throws Exception 
    { 
    String a; 
    String sql="Select last_insert_id() as adminID from admin"; 
    DatabaseConnection db = new DatabaseConnection(); 
    Connection conn =db.getConnection(); 
    PreparedStatement ps = conn.prepareStatement(sql); 
    ResultSet rs = ps.executeQuery(); 
    while(rs.next()) 
    { 
      a= rs.getString("adminID"); 
     System.out.println(a); 
    } 
    ps.close(); 
    rs.close(); 
    conn.close(); 
    return null ; 
} 

Я полагаю, чтобы получить 1, так как у меня есть один идентификатор в таблице администратора.

Вот вывод я получаю

0 
null 

Спасибо.

DatabaseConnection

package database; 
import java.sql.Connection; 
import java.sql.DriverManager; 

public class DatabaseConnection { 
    String driver; 
    String dbName; 
    String connectionURL; 

    String username; 
    String password; 
    public DatabaseConnection() 
    { 
     driver = "com.mysql.jdbc.Driver"; 
     connectionURL = "jdbc:mysql://localhost/"; 
     dbName = "user"; 
     username = "root"; 
     password = ""; 
    } 

    public Connection getConnection() throws Exception { 

      Class.forName(driver); 
      Connection connection = DriverManager.getConnection(connectionURL+dbName,username,password); 

      return connection; 
    } 

    public static void main(String[] args) { 
     DatabaseConnection db = new DatabaseConnection(); 
      try { 
       Connection conn = db.getConnection(); 
       System.out.println("Database successfully connected!"); 
       conn.close(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 
} 
+0

'выберите last_insert_id(), как adminID' достаточно. Но last_insert_id() дает вам последний вставленный идентификатор. В вашем случае вы уже вставили его? last_insert_id() следует вызывать сразу после вставки. Если вы его не вставили, вы получите 0. – Tin

+0

@Tin Я хочу получить последний идентификатор от MySQL. Использую ли я неправильный метод? (last_insert_id()) –

+1

Вы используете правильный метод, но для того, чтобы получить последний id. Сначала вы должны вставить что-то. last_insert_id() НЕ дает вам следующий идентификатор автоматического увеличения. last_insert_id дает вам то, что вы вставляете в последнее время. В вашем случае вы должны вставить таблицу администратора без указания идентификатора. Затем, если вы хотите получить admin id, вы используете last_insert_id для получения последнего вставленного id. – Tin

ответ

0

Вы не можете получить последний добавленный, но вы можете получить самый большой (я думаю, это то, что вам нужно):

Select max(id) as adminID from admin 

Где заменить 'идентификатор' с именем colum, которое вы пытаетесь получить

Вы обычно используете идентификатор, который увеличивается, поэтому последний введенный вами идентификатор является наибольшим.

+0

Это верно, только если вы единственное (то есть соединение с БД), которое вставляет в БД. Если другие соединения вставляются одновременно, тогда 'max (id)' может вводить в заблуждение. – PerlDuck

+0

Я получаю 'Unknown column 'id' в 'списке полей' –

+0

Lol, но вы хотите заменить id именем столбца, который вы пытаетесь получить: Выберите max (" YOUR_COLUMN_NAME ") как adminID от администратора –

Смежные вопросы