H2 Veritabanı - JDBC Bağlantısı
H2 bir JAVA veritabanıdır. Bu veritabanı ile JDBC kullanarak etkileşim kurabiliriz. Bu bölümde, H2 veritabanı ile JDBC bağlantısı ve H2 veritabanı ile CRUD işlemlerinin nasıl oluşturulacağını göreceğiz.
Genel olarak, bir JDBC bağlantısı oluşturmanın beş adımı vardır.
Step 1 - JDBC veritabanı sürücüsünün kaydedilmesi.
Class.forName ("org.h2.Driver");
Step 2 - Bağlantı açılıyor.
Connection conn = DriverManager.getConnection ("jdbc:h2:~/test", "sa","");
Step 3 - Bir ifade oluşturmak.
Statement st = conn.createStatement();
Step 4 - Bir ifadenin yürütülmesi ve Resultset'in alınması.
Stmt.executeUpdate("sql statement");
Step 5 - Bir bağlantı kapatılıyor.
conn.close();
Tam bir program oluşturmaya geçmeden önce, eklememiz gerekir h2-1.4.192.jar fileCLASSPATH'a. Bunu alabilirizjar klasörden C:\Program Files (x86)\H2\bin.
Tablo Oluştur
Bu örnekte tablo oluşturmak için bir program yazacağız. Adlı bir tablo düşününRegistration aşağıdaki alanlara sahip olmak.
S.No | Sütun adı | Veri tipi | GEÇERSİZ DEĞİL | Birincil anahtar |
---|---|---|---|---|
1 | İD | Numara | Evet | Evet |
2 | İlk | Varchar (255) | Hayır | Hayır |
3 | Son | Varchar (255) | Hayır | Hayır |
4 | Yaş | Numara | Hayır | Hayır |
Aşağıda adında bir örnek program yer almaktadır 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!");
}
}
Yukarıdaki programı H2jdbcCreateDemo.java içine kaydedin. Komut isteminde aşağıdaki komutları yürüterek yukarıdaki programı derleyin ve çalıştırın.
\>javac H2jdbcCreateDemo.java
\>java H2jdbcCreateDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Connecting to database...
Creating table in given database...
Created table in given database...
Goodbye!
Bu işlemden sonra H2 SQL arayüzü kullanılarak oluşturulan tabloyu kontrol edebiliriz.
Kayıt Ekle
Bu örnekte, kayıtları eklemek için bir program yazacağız. Aşağıdaki kayıtları Kayıt tablosuna ekleyelim.
İD | İlk | Son | Yaş |
---|---|---|---|
100 | Zara | Ali | 18 |
101 | Mahnaz | Fatma | 25 |
102 | Zaid | Kağan | 30 |
103 | Sumit | Mital | 28 |
Aşağıda adında bir örnek program yer almaktadır 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!");
}
}
Yukarıdaki programı H2jdbcInsertDemo.java içine kaydedin. Komut isteminde aşağıdaki komutları yürüterek yukarıdaki programı derleyin ve çalıştırın.
\>javac H2jdbcInsertDemo.java
\>java H2jdbcInsertDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
Connecting to a selected database...
Connected database successfully...
Inserted records into the table...
Goodbye!
Kaydı Oku
Bu örnekte, kayıtları okumak için bir program yazacağız. Tablodaki tüm kayıtları okumaya çalışalımRegistration.
Aşağıda adında bir örnek program yer almaktadır 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!");
}
}
Yukarıdaki programı H2jdbcReadDemo.java içine kaydedin. Komut isteminde aşağıdaki komutları yürüterek yukarıdaki programı derleyin ve çalıştırın.
\>javac H2jdbcReadDemo.java
\>java H2jdbcReadDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
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!
Kayıtları Güncelle
Bu örnekte, kayıtları güncellemek için bir program yazacağız. Tablodaki tüm kayıtları okumaya çalışalımRegistration.
Aşağıda adında bir örnek program yer almaktadır 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!");
}
}
Yukarıdaki programı H2jdbcUpdateDemo.java içine kaydedin. Komut isteminde aşağıdaki komutları yürüterek yukarıdaki programı derleyin ve çalıştırın.
\>javac H2jdbcUpdateDemo.java
\>java H2jdbcUpdateDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
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!
Kayıtları Sil
Bu örnekte, kayıtları silmek için bir program yazacağız. Tablodaki tüm kayıtları okumaya çalışalımRegistration.
Aşağıda adında bir örnek program yer almaktadır 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!");
}
}
Yukarıdaki programı H2jdbcDeleteDemo.java içine kaydedin. Komut isteminde aşağıdaki komutları yürüterek yukarıdaki programı derleyin ve çalıştırın.
\>javac H2jdbcDeleteDemo.java
\>java H2jdbcDeleteDemo
Yukarıdaki komut aşağıdaki çıktıyı üretir.
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!