Servletler - Veritabanı Erişimi

Bu eğitici, JDBC uygulamasının nasıl çalıştığını anladığınızı varsayar. Bir sunucu uygulaması aracılığıyla veritabanı erişimine başlamadan önce, bir veritabanıyla birlikte uygun JDBC ortamı kurulumuna sahip olduğunuzdan emin olun.

JDBC'yi ve ortam kurulumunu kullanarak veritabanına nasıl erişeceğiniz hakkında daha fazla ayrıntı için, JDBC Eğitimimizi inceleyebilirsiniz .

Temel kavramla başlamak için, basit bir tablo oluşturalım ve bu tabloda aşağıdaki gibi birkaç kayıt oluşturalım:

Tablo Oluştur

Oluşturmak için Employees TEST veritabanındaki tablo için aşağıdaki adımları kullanın -

Aşama 1

Bir Command Prompt ve aşağıdaki gibi kurulum dizinine geçin -

C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

Adım 2

Veritabanına aşağıdaki şekilde giriş yapın

C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>

Aşama 3

Tabloyu oluşturun Employee içinde TEST aşağıdaki gibi veritabanı -

mysql> use TEST;
mysql> create table Employees (
   id int not null,
   age int not null,
   first varchar (255),
   last varchar (255)
);
Query OK, 0 rows affected (0.08 sec)
mysql>

Veri Kayıtları Oluşturun

Son olarak, Employee tablosunda aşağıdaki gibi birkaç kayıt oluşturursunuz -

mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Query OK, 1 row affected (0.05 sec)
 
mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
Query OK, 1 row affected (0.00 sec)
 
mysql>

Bir Veritabanına Erişim

İşte Servlet kullanarak TEST veritabanına nasıl erişileceğini gösteren bir örnek.

// Loading required libraries
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
 
public class DatabaseAccess extends HttpServlet{

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
   
      // JDBC driver name and database URL
      static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
      static final String DB_URL="jdbc:mysql://localhost/TEST";

      //  Database credentials
      static final String USER = "root";
      static final String PASS = "password";

      // Set response content type
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      String title = "Database Result";
      
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";
      
      out.println(docType +
         "<html>\n" +
         "<head><title>" + title + "</title></head>\n" +
         "<body bgcolor = \"#f0f0f0\">\n" +
         "<h1 align = \"center\">" + title + "</h1>\n");
      try {
         // Register JDBC driver
         Class.forName("com.mysql.jdbc.Driver");

         // Open a connection
         Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);

         // Execute SQL query
         Statement stmt = conn.createStatement();
         String sql;
         sql = "SELECT id, first, last, age FROM Employees";
         ResultSet rs = stmt.executeQuery(sql);

         // 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
            out.println("ID: " + id + "<br>");
            out.println(", Age: " + age + "<br>");
            out.println(", First: " + first + "<br>");
            out.println(", Last: " + last + "<br>");
         }
         out.println("</body></html>");

         // Clean-up environment
         rs.close();
         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
   }
}

Şimdi yukarıdaki servlet'i derleyelim ve web.xml'de aşağıdaki girdileri oluşturalım.

....
<servlet>
   <servlet-name>DatabaseAccess</servlet-name>
   <servlet-class>DatabaseAccess</servlet-class>
</servlet>
 
<servlet-mapping>
   <servlet-name>DatabaseAccess</servlet-name>
   <url-pattern>/DatabaseAccess</url-pattern>
</servlet-mapping>
....

Şimdi bu sunucu uygulamasını http: // localhost: 8080 / DatabaseAccess URL'sini kullanarak çağırın ve aşağıdaki yanıtı görüntüleyecektir -

Database Result

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