H2-Datenbank - JDBC-Verbindung
H2 ist eine JAVA-Datenbank. Wir können mit dieser Datenbank mithilfe von JDBC interagieren. In diesem Kapitel erfahren Sie, wie Sie eine JDBC-Verbindung mit der H2-Datenbank und die CRUD-Operationen mit der H2-Datenbank erstellen.
Im Allgemeinen gibt es fünf Schritte zum Erstellen einer JDBC-Verbindung.
Step 1 - Registrieren des JDBC-Datenbanktreibers.
Class.forName ("org.h2.Driver");
Step 2 - Verbindung öffnen.
Connection conn = DriverManager.getConnection ("jdbc:h2:~/test", "sa","");
Step 3 - Erstellen einer Erklärung.
Statement st = conn.createStatement();
Step 4 - Ausführen einer Anweisung und Empfangen der Ergebnismenge.
Stmt.executeUpdate("sql statement");
Step 5 - Schließen einer Verbindung.
conn.close();
Bevor wir fortfahren, um ein vollständiges Programm zu erstellen, müssen wir hinzufügen h2-1.4.192.jar filezu CLASSPATH. Wir können das bekommenjar aus dem Ordner C:\Program Files (x86)\H2\bin.
Tabelle erstellen
In diesem Beispiel schreiben wir ein Programm zum Erstellen einer Tabelle. Betrachten Sie eine Tabelle mit dem NamenRegistration mit den folgenden Feldern.
S.No. | Spaltenname | Datentyp | NICHT NULL | Primärschlüssel |
---|---|---|---|---|
1 | ICH WÜRDE | Nummer | Ja | Ja |
2 | Zuerst | Varchar (255) | Nein | Nein |
3 | Zuletzt | Varchar (255) | Nein | Nein |
4 | Alter | Nummer | Nein | Nein |
Es folgt ein Beispielprogramm mit dem Namen H2jdbcCreateDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcCreateDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
//STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//STEP 3: Execute a query
System.out.println("Creating table in given database...");
stmt = conn.createStatement();
String sql = "CREATE TABLE REGISTRATION " +
"(id INTEGER not NULL, " +
" first VARCHAR(255), " +
" last VARCHAR(255), " +
" age INTEGER, " +
" PRIMARY KEY ( id ))";
stmt.executeUpdate(sql);
System.out.println("Created table in given database...");
// STEP 4: Clean-up environment
stmt.close();
conn.close();
} catch(SQLException se) {
//Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
//Handle errors for Class.forName
e.printStackTrace();
} finally {
//finally block used to close resources
try{
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se){
se.printStackTrace();
} //end finally try
} //end try
System.out.println("Goodbye!");
}
}
Speichern Sie das obige Programm in H2jdbcCreateDemo.java. Kompilieren Sie das obige Programm und führen Sie es aus, indem Sie die folgenden Befehle an der Eingabeaufforderung ausführen.
\>javac H2jdbcCreateDemo.java
\>java H2jdbcCreateDemo
Der obige Befehl erzeugt die folgende Ausgabe.
Connecting to database...
Creating table in given database...
Created table in given database...
Goodbye!
Nach dieser Ausführung können wir die mit der H2 SQL-Schnittstelle erstellte Tabelle überprüfen.
Datensätze einfügen
In diesem Beispiel schreiben wir ein Programm zum Einfügen von Datensätzen. Fügen wir die folgenden Datensätze in die Tabelle Registrierung ein.
ICH WÜRDE | Zuerst | Zuletzt | Alter |
---|---|---|---|
100 | Zara | Ali | 18 |
101 | Mahnaz | Fatma | 25 |
102 | Zaid | Khan | 30 |
103 | Sumit | Mital | 28 |
Es folgt ein Beispielprogramm mit dem Namen H2jdbcInsertDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcInsertDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to a selected database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println("Connected database successfully...");
// STEP 3: Execute a query
stmt = conn.createStatement();
String sql = "INSERT INTO Registration " + "VALUES (100, 'Zara', 'Ali', 18)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES (101, 'Mahnaz', 'Fatma', 25)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES (102, 'Zaid', 'Khan', 30)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES(103, 'Sumit', 'Mittal', 28)";
stmt.executeUpdate(sql);
System.out.println("Inserted records into the table...");
// STEP 4: Clean-up environment
stmt.close();
conn.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Speichern Sie das obige Programm in H2jdbcInsertDemo.java. Kompilieren Sie das obige Programm und führen Sie es aus, indem Sie die folgenden Befehle an der Eingabeaufforderung ausführen.
\>javac H2jdbcInsertDemo.java
\>java H2jdbcInsertDemo
Der obige Befehl erzeugt die folgende Ausgabe.
Connecting to a selected database...
Connected database successfully...
Inserted records into the table...
Goodbye!
Aufzeichnung lesen
In diesem Beispiel schreiben wir ein Programm zum Lesen von Datensätzen. Versuchen wir, alle Datensätze aus der Tabelle zu lesenRegistration.
Es folgt ein Beispielprogramm mit dem Namen H2jdbcRecordDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcReadDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Connected database successfully...");
stmt = conn.createStatement();
String sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
// STEP 4: Extract data from result set
while(rs.next()) {
// Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
// Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
// STEP 5: Clean-up environment
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Speichern Sie das obige Programm in H2jdbcReadDemo.java. Kompilieren Sie das obige Programm und führen Sie es aus, indem Sie die folgenden Befehle an der Eingabeaufforderung ausführen.
\>javac H2jdbcReadDemo.java
\>java H2jdbcReadDemo
Der obige Befehl erzeugt die folgende Ausgabe.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 18, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!
Datensätze aktualisieren
In diesem Beispiel schreiben wir ein Programm zum Aktualisieren von Datensätzen. Versuchen wir, alle Datensätze aus der Tabelle zu lesenRegistration.
Es folgt ein Beispielprogramm mit dem Namen H2jdbcUpdateDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcUpdateDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to a database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Connected database successfully...");
stmt = conn.createStatement();
String sql = "UPDATE Registration " + "SET age = 30 WHERE id in (100, 101)";
stmt.executeUpdate(sql);
// Now you can extract all the records
// to see the updated records
sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
// Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
// Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Speichern Sie das obige Programm in H2jdbcUpdateDemo.java. Kompilieren Sie das obige Programm und führen Sie es aus, indem Sie die folgenden Befehle an der Eingabeaufforderung ausführen.
\>javac H2jdbcUpdateDemo.java
\>java H2jdbcUpdateDemo
Der obige Befehl erzeugt die folgende Ausgabe.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 30, First: Zara, Last: Ali
ID: 101, Age: 30, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!
Datensätze löschen
In diesem Beispiel schreiben wir ein Programm zum Löschen von Datensätzen. Versuchen wir, alle Datensätze aus der Tabelle zu lesenRegistration.
Es folgt ein Beispielprogramm mit dem Namen H2jdbcDeleteDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcDeleteDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Creating table in given database...");
stmt = conn.createStatement();
String sql = "DELETE FROM Registration " + "WHERE id = 101";
stmt.executeUpdate(sql);
// Now you can extract all the records
// to see the remaining records
sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
// Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
// Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Speichern Sie das obige Programm in H2jdbcDeleteDemo.java. Kompilieren Sie das obige Programm und führen Sie es aus, indem Sie die folgenden Befehle an der Eingabeaufforderung ausführen.
\>javac H2jdbcDeleteDemo.java
\>java H2jdbcDeleteDemo
Der obige Befehl erzeugt die folgende Ausgabe.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 30, First: Zara, Last: Ali
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!