Java Servlet and JDBC Example | Insert data in MySQL

Prerequisites: Servlet, JDBC Connectivity

To start with interfacing Java Servlet Program with JDBC Connection:

  1. Proper JDBC Environment should set-up along with database creation.
  2. To do so, download the mysql-connector.jar file from the internet,
  3. As it is downloaded, move the jar file to the apache-tomcat server folder,
  4. Place the file in lib folder present in the apache-tomcat directory.
  5. To start with the basic concept of interfacing:
    • Step 1: Creation of Database and Table in MySQL

      As soon as jar file is placed in the folder, create a database and table in MySQL,

      mysql> create database demoprj;
      Query OK, 1 row affected (4.10 sec)
      
      mysql> use demoprj
      Database changed
      
      mysql> create table demo(id int(10), string varchar(20));
      Query OK, 0 rows affected (1.93 sec)
      
      mysql> desc demo;
      +--------+-------------+------+-----+---------+-------+
      | Field  | Type        | Null | Key | Default | Extra |
      +--------+-------------+------+-----+---------+-------+
      | id     | int(10)     | YES  |     | NULL    |       |
      | string | varchar(20) | YES  |     | NULL    |       |
      +--------+-------------+------+-----+---------+-------+
      2 rows in set (0.40 sec)
      
    • Step 2: Implementation of required Web-pages
      Create a form in HTML file, where take all the inputs required to insert data into the database. Specify the servlet name in it, with the POST method as security is important aspects in database connectivity.

      filter_none

      edit
      close

      play_arrow

      link
      brightness_4
      code

      <!DOCTYPE html>
      <html>
      <head>
      <title>Insert Data</title>
      </head>
      <body>
          <!-- Give Servlet reference to the form as an instances 
          GET and POST services can be according to the problem statement-->
          <form action="./InsertData" method="post">
              <p>ID:</p
              <!-- Create an element with mandatory name attribute,
              so that data can be transfer to the servlet using getParameter() -->
              <input type="text" name="id"/>
              <br/>
              <p>String:</p
              <input type="text" name="string"/>
              <br/><br/><br/>
              <input type="submit"/>
          </form>
      </body>
      </html>

      chevron_right

      
      

      Output:
      output



      Submit the data (with validation) as all the required data are inserted.

    • Step 3: Creation of Java Servlet program with JDBC Connection

      To create a JDBC Connection steps are

      1. Import all the packages
      2. Register the JDBC Driver
      3. Open a connection
      4. Execute the query, and retrieve the result
      5. Clean up the JDBC Environment

      Create a separate class to create a connection of database, as it is a lame process to writing the same code snippet in all the program. Create a .java file which returns a Connection object.

      filter_none

      edit
      close

      play_arrow

      link
      brightness_4
      code

      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.SQLException;
        
      // This class can be used to initialize the database connection
      public class DatabaseConnection {
          protected static Connection initializeDatabase()
              throws SQLException, ClassNotFoundException
          {
              // Initialize all the information regarding
              // Database Connection
              String dbDriver = "com.mysql.jdbc.Driver";
              String dbURL = "jdbc:mysql:// localhost:3306/";
              // Database name to access
              String dbName = "demoprj";
              String dbUsername = "root";
              String dbPassword = "root";
        
              Class.forName(dbDriver);
              Connection con = DriverManager.getConnection(dbURL + dbName,
                                                           dbUsername, 
                                                           dbPassword);
              return con;
          }
      }

      chevron_right

      
      

    • Step 4: To use this class method, create an object in Java Servlet program

      Below program shows Servlet Class which create a connection and insert the data in the demo table,

      filter_none

      edit
      close

      play_arrow

      link
      brightness_4
      code

      import java.io.IOException;
      import java.io.PrintWriter;
      import java.sql.Connection;
      import java.sql.PreparedStatement;
        
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
        
      // Import Database Connection Class file
      import code.DatabaseConnection;
        
      // Servlet Name
      @WebServlet("/InsertData")
      public class InsertData extends HttpServlet {
          private static final long serialVersionUID = 1L;
        
          protected void doPost(HttpServletRequest request, 
      HttpServletResponse response)
              throws ServletException, IOException
          {
              try {
        
                  // Initialize the database
                  Connection con = DatabaseConnection.initializeDatabase();
        
                  // Create a SQL query to insert data into demo table
                  // demo table consists of two columns, so two '?' is used
                  PreparedStatement st = con
                         .prepareStatement("insert into demo values(?, ?)");
        
                  // For the first parameter,
                  // get the data using request object
                  // sets the data to st pointer
                  st.setInt(1, Integer.valueOf(request.getParameter("id")));
        
                  // Same for second parameter
                  st.setString(2, request.getParameter("string"));
        
                  // Execute the insert command using executeUpdate()
                  // to make changes in database
                  st.executeUpdate();
        
                  // Close all the connections
                  st.close();
                  con.close();
        
                  // Get a writer pointer 
                  // to display the succesful result
                  PrintWriter out = response.getWriter();
                  out.println("<html><body><b>Successfully Inserted"
                              + "</b></body></html>");
              }
              catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }

      chevron_right

      
      

    • Step 5: Get the data from the HTML file

      To get the data from the HTML file, the request object is used which calls getParameter() Method to fetch the data from the channel. After successful insertion, the writer object is created to display a success message.

      After insertion operation from Servlet, data will be reflected in MySQL Database

      Output:
      success

      Result in MySQL Interface

      mysql> select * from demo;
      +------+---------------+
      | id   | string        |
      +------+---------------+
      |    1 | GeeksForGeeks |
      +------+---------------+
      1 row in set (0.06 sec)

This article shows the basic connection of JDBC with Java Servlet Program, to insert data in large volume then proper validation should be done as if any data which is not in proper format will encounter an error. All the data inserting in Database should be encrypted.



My Personal Notes arrow_drop_up

सर्वशक्तिशाली इकलौता

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.