Holen Sie sich die automatisch erhöhenden Wert der Spalte bei dem Insert eines Rekord, der JDBC benutzt
1. Das Problem
In einigen Database kann die Spalte ID von einer Tabelle das automatisch erhöhenden Wertstyp. Bei Einfügen eines Rekord in der Tabelle wird die Wert der Spalte durch die Database angewiesen . Sie können die Wert für sie nicht bestimmen. Ihre Frage liegt darin, wie im Fall die ID von dem eingefügten Rekord zu entnehmen
Außerdem können einigen Spalte an den Befehl Insert nicht teilnehmen. In diesem Fall wird ihre Wert standardmäßig nach der Database angewiesen. Sie möchten ohne die Erstellung eines Abfragebefehl die Werte entnehmen
PostGres
Im PostGres hat die Spalte das Typ vom Serial, deren Wert sich durch die Database automatisch erhöht
** Employees (PostGres) **
CREATE TABLE Employees
(
ID serial NOT NULL,
Full_Name character varying(50) NOT NULL,
Gender character varying(1) default 'M' NOT NULL,
Hire_Date date NOT NULL,
PRIMARY KEY (ID)
);
MySQL
Im MySQL um eine Spalte mit der automatisch erhöhenden Wert zu haben, soll sie das Attribut (attribute) "Auto_Increase" angewiesen.
** Employees (MySQL) **
CREATE TABLE Employees
(
ID Int Auto_Increase NOT NULL,
Full_Name Varchar(50) NOT NULL,
Gender Varchar(1) default 'M' NOT NULL,
Hire_Date date NOT NULL,
PRIMARY KEY (ID)
);
2. Die Wert von Spalte ID von dem eingefügten Rekord entnehmen
Wenn Sie JDBC benutzen um einen Rekord in Database zu Insert . Die Spalte ID kann an den Befehl Insert nicht teilnehmen. Die Position von der Spalte ID wird durch die Design der Tabelle bestimmt. Die erste Spalte hat die Index 1, die zweite Spalte hat die Index 2...
GeneratedIDValueExample.java
package org.o7planning.tutorial.jdbc.others;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.o7planning.tutorial.jdbc.ConnectionUtils;
public class GeneratedIDValueExample {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// Die Verbindung nach der Database entnehmen.
Connection conn = ConnectionUtils.getMyConnection();
// Employees (id, full_name, gender, hire_date)
// ID: Auto Increase
String sql = "Insert into Employees " //
+ " (full_name, gender, hire_date) " //
+ " values " //
+ " (?, ?, ?)";
// Ein Objekt PreparedStatement erstellen.
PreparedStatement pstm = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
pstm.setString(1, "Tran");
pstm.setString(2, "M");
pstm.setDate(3, new java.sql.Date(System.currentTimeMillis()));
// Execute!
pstm.execute();
ResultSet rs = pstm.getGeneratedKeys();
int idValue = 0;
if (rs.next()) {
// Die Wert von ID
idValue = rs.getInt(1);
}
System.out.println("ID value: " + idValue);
}
}
Die Index der Spalte ID der Tabelle kann 1 nicht sein (von der Design von der Tabelle abhängig). Im Fall ist es besten, dass Sie ihre Wert nach dem Name zugreifen sollen
GeneratedIDValueExample2.java
package org.o7planning.tutorial.jdbc.others;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.o7planning.tutorial.jdbc.ConnectionUtils;
public class GeneratedIDValueExample2 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Connection conn = ConnectionUtils.getMyConnection();
// Employees (id, full_name, gender, hire_date)
// ID: Auto Increase
String sql = "Insert into Employees " //
+ " (full_name, gender, hire_date) " //
+ " values " //
+ " (?, ?, ?)";
// Create a PreparedStatement object.
PreparedStatement pstm = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
pstm.setString(1, "Tran");
pstm.setString(2, "M");
pstm.setDate(3, new java.sql.Date(System.currentTimeMillis()));
// Execute!
pstm.execute();
ResultSet rs = pstm.getGeneratedKeys();
int idValue = 0;
if (rs.next()) {
// Value of ID.
// Note, for some DB, column names are case sensitive.
// (eg Postgres, column names are always lowercase).
idValue = rs.getInt("id");
}
System.out.println("ID value: " + idValue);
}
}
3. Die Wert von der eingefügten Spalten entnehmen
Einige Zahlen können an Ihren Befehl Insert nicht teilnehmen. Ihre Wert werden durch die Database angewiesen. Sie können ihre Wert ohne die Erstellung eines Abfrage-Befehl entnehmen
GetGeneratedValueExample2.java
package org.o7planning.tutorial.jdbc.others;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.o7planning.tutorial.jdbc.ConnectionUtils;
public class GetGeneratedValueExample2 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Connection conn = ConnectionUtils.getMyConnection();
// Employees (id, full_name, gender, hire_date)
// ID: Auto Increase
// gender: Default
String sql = "Insert into Employees " //
+ " (Full_Name, Hire_Date) " //
+ " values " //
+ " (?, ?)";
// Ein Objekt PreparedStatement erstellen.
// Und den Outputparameter nach dem Name ("id", "gender", "hire_date") registrieren
PreparedStatement pstm = conn.prepareStatement(sql, new String[] { "id", "gender", "hire_date" });
pstm.setString(1, "Tran");
pstm.setDate(2, new java.sql.Date(System.currentTimeMillis()));
// Execute!
pstm.execute();
ResultSet rs = pstm.getGeneratedKeys();
int idValue = 0;
String gender = null;
java.sql.Date hireDate = null;
if (rs.next()) {
idValue = rs.getInt("ID");
gender = rs.getString("Gender");
hireDate = rs.getDate("Hire_Date");
}
System.out.println("ID value: " + idValue + " Gender: " + gender + ", Hidedate: " + hireDate);
}
}
Java Grundlagen
- Anpassen von Java-Compiler, der Ihre Annotation verarbeitet (Annotation Processing Tool)
- Java Programmierung für Team mit Eclipse und SVN
- Die Anleitung zu Java WeakReference
- Die Anleitung zu Java PhantomReference
- Komprimierung und Dekomprimierung in Java
- Konfigurieren von Eclipse zur Verwendung des JDK anstelle von JRE
- Java-Methoden String.format() und printf()
- Syntax und neue Funktionen in Java 8
- Die Anleitung zu Java Reguläre Ausdrücke
- Die Anleitung zu Java Multithreading Programming
- JDBC Driver Bibliotheken für verschiedene Arten von Datenbank in Java
- Die Anleitung zu Java JDBC
- Holen Sie sich die automatisch erhöhenden Wert der Spalte bei dem Insert eines Rekord, der JDBC benutzt
- Die Anleitung zu Java Stream
- Die Anleitung zu Java Functional Interface
- Einführung in Raspberry Pi
- Die Anleitung zu Java Predicate
- Abstrakte Klasse und Interface in Java
- Zugriffsmodifikatoren (Access modifiers) in Java
- Die Anleitung zu Java Enum
- Die Anleitung zu Java Annotation
- Vergleichen und Sortieren in Java
- Die Anleitung zu Java String, StringBuffer und StringBuilder
- Die Anleitung zu Java Exception
- Die Anleitung zu Java Generics
- Manipulieren von Dateien und Verzeichnissen in Java
- Die Anleitung zu Java BiPredicate
- Die Anleitung zu Java Consumer
- Die Anleitung zu Java BiConsumer
- Was ist erforderlich, um mit Java zu beginnen?
- Geschichte von Java und der Unterschied zwischen Oracle JDK und OpenJDK
- Installieren Sie Java unter Windows
- Installieren Sie Java unter Ubuntu
- Installieren Sie OpenJDK unter Ubuntu
- Installieren Sie Eclipse
- Installieren Sie Eclipse unter Ubuntu
- Schnelle lernen Java für Anfänger
- Geschichte von Bits und Bytes in der Informatik
- Datentypen in Java
- Bitweise Operationen
- if else Anweisung in Java
- Switch Anweisung in Java
- Schleifen in Java
- Die Anleitung zu Java Array
- JDK Javadoc im CHM-Format
- Vererbung und Polymorphismus in Java
- Die Anleitung zu Java Function
- Die Anleitung zu Java BiFunction
- Beispiel für Java Encoding und Decoding mit Apache Base64
- Die Anleitung zu Java Reflection
- Java-Remote-Methodenaufruf - Java RMI
- Die Anleitung zu Java Socket
- Welche Plattform sollten Sie wählen für Applikationen Java Desktop entwickeln?
- Die Anleitung zu Java Commons IO
- Die Anleitung zu Java Commons Email
- Die Anleitung zu Java Commons Logging
- Java System.identityHashCode, Object.hashCode und Object.equals verstehen
- Die Anleitung zu Java SoftReference
- Die Anleitung zu Java Supplier
- Java Aspect Oriented Programming mit AspectJ (AOP)
Show More
- Anleitungen Java Servlet/JSP
- Die Anleitungen Java Collections Framework
- Java API für HTML & XML
- Die Anleitungen Java IO
- Die Anleitungen Java Date Time
- Anleitungen Spring Boot
- Anleitungen Maven
- Anleitungen Gradle
- Anleitungen Java Web Services
- Anleitungen Java SWT
- Die Anleitungen JavaFX
- Die Anleitungen Oracle Java ADF
- Die Anleitungen Struts2 Framework
- Anleitungen Spring Cloud