Nhận id sau khi chèn mysql java

Nhiệm vụ ở đây là soạn thảo một chương trình Python hoạt động với sự hỗ trợ của SQL để kết nối dữ liệu. Bất cứ khi nào việc chèn vào cơ sở dữ liệu diễn ra, ID của hàng được chèn sẽ được in. Để kết nối python với cơ sở dữ liệu, chúng tôi đang sử dụng trình kết nối MySQL. Công việc của trình kết nối mysql là cung cấp quyền truy cập vào Trình điều khiển MySQL cho ngôn ngữ được yêu cầu. Do đó, nó tạo ra một kết nối giữa ngôn ngữ lập trình và MySQL Server.  

Mệnh đề INSERT trong SQL

Như tên gợi ý, nó chèn dữ liệu vào cơ sở dữ liệu. Một số quy tắc cần phải được tuân theo trong khi sử dụng lệnh chèn. Dữ liệu được cập nhật phải theo thứ tự giống như các cột của cơ sở dữ liệu hoặc tên của các cột phải được cung cấp cho truy vấn cùng với dữ liệu được chèn

cú pháp

INSERT INTO (Col1,Col2, …)

GIÁ TRỊ(…. );

Để in ID của hàng được chèn cuối cùng, lastrowid sẽ được sử dụng. Đây là một từ khóa đặc biệt in ID của hàng được chèn lần cuối nhưng để làm như vậy, có một số giao thức nhất định phải được ghi nhớ trước khi sử dụng từ khóa này

Để truy xuất các khóa được tạo tự động do câu lệnh INSERT tạo ra, bạn cần thực hiện các bước sau

  1. Sử dụng một trong các phương pháp sau để cho biết rằng bạn muốn trả về các khóa được tạo tự động
    • Nếu bạn định sử dụng PreparedStatement. execUpdate để chèn hàng, hãy gọi một trong các dạng này của Kết nối. Chuẩn bị phương thức để tạo đối tượng PreparedStatement .

      Biểu mẫu sau đây hợp lệ cho một bảng trên bất kỳ nguồn dữ liệu nào hỗ trợ các cột nhận dạng

      Hạn chế. Dành cho Trình điều khiển máy chủ dữ liệu IBM dành cho JDBC và SQLJ phiên bản 3. 57 trở lên, biểu mẫu sau không hợp lệ để chèn hàng vào chế độ xem trên máy chủ dữ liệu Db2® for z/OS® .

      Connection.prepareStatement(sql-statement, 
        Statement.RETURN_GENERATED_KEYS);

      Nếu máy chủ dữ liệu là Db2 cho z/OS , các biểu mẫu sau chỉ hợp lệ nếu máy chủ dữ liệu hỗ trợ câu lệnh SELECT FROM INSERT. Với biểu mẫu đầu tiên, bạn chỉ định tên của các cột mà bạn muốn các khóa được tạo tự động. Với biểu mẫu thứ hai, bạn chỉ định các vị trí trong bảng cột mà bạn muốn các khóa được tạo tự động.

      Connection.prepareStatement(sql-statement, String [] columnNames);
      Connection.prepareStatement(sql-statement, int [] columnIndexes);
    • Nếu bạn sử dụng Câu lệnh. execUpdate để chèn hàng, gọi một trong các dạng này của Câu lệnh. phương thức execUpdate .

      Biểu mẫu sau đây hợp lệ cho một bảng trên bất kỳ nguồn dữ liệu nào hỗ trợ các cột nhận dạng

      Hạn chế. Dành cho Trình điều khiển máy chủ dữ liệu IBM dành cho JDBC và SQLJ phiên bản 3. 57 trở lên, biểu mẫu sau không hợp lệ để chèn hàng vào chế độ xem trên máy chủ dữ liệu Db2 cho z/OS .

      Statement.executeUpdate(sql-statement, Statement.RETURN_GENERATED_KEYS);

      Nếu máy chủ dữ liệu là Db2 cho z/OS , các biểu mẫu sau chỉ hợp lệ nếu máy chủ dữ liệu hỗ trợ câu lệnh SELECT FROM INSERT. Với biểu mẫu đầu tiên, bạn chỉ định tên của các cột mà bạn muốn các khóa được tạo tự động. Với biểu mẫu thứ hai, bạn chỉ định các vị trí trong bảng cột mà bạn muốn các khóa được tạo tự động.

      Statement.executeUpdate(sql-statement, String [] columnNames);
      Statement.executeUpdate(sql-statement, int [] columnIndexes);
  2. Gọi PreparedStatement. getGeneratedKeys hoặc Câu lệnh. getGeneratedKeys để truy xuất đối tượng ResultSet có chứa các giá trị khóa được tạo tự động.

    Nếu bạn bao gồm Câu lệnh. RETURN_GENERATED_KEYS , loại dữ liệu của các khóa được tạo tự động trong ResultSet là DECIMAL, bất kể loại dữ liệu của .

Thí dụ

Đoạn mã sau tạo một bảng có cột nhận dạng, chèn một hàng vào bảng và truy xuất giá trị khóa được tạo tự động cho cột nhận dạng. Các số ở bên phải của các câu lệnh đã chọn tương ứng với các bước được mô tả trước đó.

import java.sql.*;
import java.math.*;
import com.ibm.db2.jcc.*;

Connection con;
Statement stmt;
ResultSet rs;
java.math.BigDecimal iDColVar;
…
stmt = con.createStatement();         // Create a Statement object

stmt.executeUpdate( 
  "CREATE TABLE EMP_PHONE (EMPNO CHAR(6), PHONENO CHAR(4), " +
    "IDENTCOL INTEGER GENERATED ALWAYS AS IDENTITY)"); 
                                      // Create table with identity column
stmt.executeUpdate("INSERT INTO EMP_PHONE (EMPNO, PHONENO) " +            1 
  "VALUES ('000010', '5555')",        // Insert a row
  Statement.RETURN_GENERATED_KEYS);   // Indicate you want automatically 
                                      // generated keys
rs = stmt.getGeneratedKeys();         // Retrieve the automatically       2 
                                      // generated key value in a ResultSet.
                                      // Only one row is returned.
                                      // Create ResultSet for query
while (rs.next()) {
  java.math.BigDecimal idColVar = rs.getBigDecimal(1);     
                                      // Get automatically generated key 
                                      // value
  System.out.println("automatically generated key value = " + idColVar);
}
rs.close();                           // Close ResultSet
stmt.close();                         // Close Statement

Làm cách nào để lấy ID được chèn lần cuối trong MySQL bằng Java?

Nếu bạn là AUTO_INCREMENT với cột, thì bạn có thể sử dụng phương thức last_insert_id() . Phương thức này lấy ID của bản ghi được chèn cuối cùng trong MySQL. Chèn một số bản ghi vào bảng bằng lệnh chèn. Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh chọn.

Làm cách nào để lấy ID được chèn vào SQL trong Java?

Hệ thống. ra. println( "ID của bản ghi được chèn. " + createdKey); Lưu ý. đối với cơ sở dữ liệu Oracle, bạn nên tạo một chuỗi cho khóa chính của bảng.

Làm cách nào để nhận giá trị gia tăng tự động trong MySQL sau khi chèn vào Java?

Sau khi thêm giá trị của tất cả các bản ghi vào lô, hãy thực thi lô bằng phương thức execBatch(). pstmt. executeBatch(); Cuối cùng, lấy các khóa tăng tự động được tạo bởi đối tượng PreparedStatement này bằng phương thức getGeneratedKeys() .

Làm cách nào để lấy giá trị khóa chính từ các truy vấn được chèn bằng JDBC?

Nếu bạn chèn các bản ghi vào một bảng có chứa cột tăng tự động, sử dụng các đối tượng Statement hoặc, PreparedStatement. Bạn có thể truy xuất các giá trị của cột cụ thể đó do đối tượng tạo ra bằng cách sử dụng phương thức getGeneratedKeys() .