Category: java Mysql

  • Khóa học miễn phí Java & MySQL – Where Clause nhận dự án làm có lương

    Java & MySQL – WHERE Clause Example



    This chapter provides an example on how to select records from a table using JDBC application. This would add additional conditions using WHERE clause while selecting records from the table. Before executing the following example, make sure you have the following in place −

    • To execute the following example you can replace the username and password with your actual user name and password.

    • Your MySQL database you are using, is up and running.

    Required Steps

    The following steps are required to create a new Database using JDBC application −

    • Import the packages − Requires that you include the packages containing the JDBC classes needed for the database programming. Most often, using import java.sql.* will suffice.

    • Register the JDBC driver − Requires that you initialize a driver so you can open a communications channel with the database.

    • Open a connection − Requires using the DriverManager.getConnection() method to create a Connection object, which represents a physical connection with a database server.

    • Execute a query − Requires using an object of type Statement for building and submitting an SQL statement to fetch records from a table, which meet the given condition. This Query makes use of the WHERE clause to select records.

    • Clean up the environment − try with resources automatically closes the resources.

    Sample Code

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
       static final String QUERY = "SELECT id, first, last, age FROM Registration";
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();) {
             System.out.println("Fetching records without condition...");
             ResultSet rs = stmt.executeQuery(QUERY);
             while(rs.next()){
                //Display values
                System.out.print("ID: " + rs.getInt("id"));
                System.out.print(", Age: " + rs.getInt("age"));
                System.out.print(", First: " + rs.getString("first"));
                System.out.println(", Last: " + rs.getString("last"));
             }
    
             // Select all records having ID equal or greater than 101
             System.out.println("Fetching records with condition...");
             String sql = "SELECT id, first, last, age FROM Registration" +
                " WHERE id >= 101 ";
             rs = stmt.executeQuery(sql);
    
             while(rs.next()){
                //Display values
                System.out.print("ID: " + rs.getInt("id"));
                System.out.print(", Age: " + rs.getInt("age"));
                System.out.print(", First: " + rs.getString("first"));
                System.out.println(", Last: " + rs.getString("last"));
             }
             rs.close();
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    Fetching records without condition...
    ID: 100, Age: 30, First: Zara, Last: Ali
    ID: 102, Age: 30, First: Zaid, Last: Khan
    ID: 103, Age: 28, First: Sumit, Last: Mittal
    Fetching records with condition...
    ID: 102, Age: 30, First: Zaid, Last: Khan
    ID: 103, Age: 28, First: Sumit, Last: Mittal
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Java & MySQL – Update Result Set nhận dự án làm có lương

    Java & MySQL – Updating a ResultSet



    The ResultSet interface contains a collection of update methods for updating the data of a result set.

    As with the get methods, there are two update methods for each data type −

    • One that takes in a column name.

    • One that takes in a column index.

    For example, to update a String column of the current row of a result set, you would use one of the following updateString() methods −

    S.N. Methods & Description
    1 public void updateString(int columnIndex, String s) throws SQLException

    Changes the String in the specified column to the value of s.

    2 public void updateString(String columnName, String s) throws SQLException

    Similar to the previous method, except that the column is specified by its name instead of its index.

    There are update methods for the eight primitive data types, as well as String, Object, URL, and the SQL data types in the java.sql package.

    Updating a row in the result set changes the columns of the current row in the ResultSet object, but not in the underlying database. To update your changes to the row in the database, you need to invoke one of the following methods.

    S.N. Methods & Description
    1 public void updateRow()

    Updates the current row by updating the corresponding row in the database.

    2 public void deleteRow()

    Deletes the current row from the database

    3 public void refreshRow()

    Refreshes the data in the result set to reflect any recent changes in the database.

    4 public void cancelRowUpdates()

    Cancels any updates made on the current row.

    5 public void insertRow()

    Inserts a row into the database. This method can only be invoked when the cursor is pointing to the insert row.

    Following is the example, which makes use of the ResultSet.CONCUR_UPDATABLE and ResultSet.TYPE_SCROLL_INSENSITIVE described in the Result Set tutorial. This example would explain INSERT, UPDATE and DELETE operation on a table.

    It should be noted that tables you are working on should have Primary Key set properly. Let”s update our referece table first.

    Drop the table and Create the table Employees again as follows −

    mysql> use TUTORIALSPOINT;
    mysql> drop table Employees;
    Query OK, 0 rows affected (0.08 sec)
    mysql> create table Employees
        -> (
        -> id int primary key auto_increment,
        -> age int not null,
        -> first varchar (255),
        -> last varchar (255)
        -> );
    Query OK, 0 rows affected (0.08 sec)
    mysql>
    

    Create Data Records

    Finally you create few records in Employee table as follows −

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

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
       static final String QUERY = "SELECT id, first, last, age FROM Employees";
    
       public static void printResultSet(ResultSet rs) throws SQLException{
          // Ensure we start with first row
          rs.beforeFirst();
          while(rs.next()){
             // Display values
             System.out.print("ID: " + rs.getInt("id"));
             System.out.print(", Age: " + rs.getInt("age"));
             System.out.print(", First: " + rs.getString("first"));
             System.out.println(", Last: " + rs.getString("last"));
          }
          System.out.println();
       }
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement(
             ResultSet.TYPE_SCROLL_INSENSITIVE,
             ResultSet.CONCUR_UPDATABLE);
             ResultSet rs = stmt.executeQuery(QUERY);
          ) {
    
             System.out.println("List result set for reference....");
             printResultSet(rs);
    
             // Loop through result set and add 5 in age
             // Move to Before first position so while-loop works properly
             rs.beforeFirst();
             //STEP 7: Extract data from result set
             while(rs.next()){
                // Retrieve by column name
                int newAge = rs.getInt("age") + 5;
                rs.updateDouble( "age", newAge );
                rs.updateRow();
             }
             System.out.println("List result set showing new ages...");
             printResultSet(rs);
    
             // Insert a record into the table.
             // Move to insert row and add column data with updateXXX()
             System.out.println("Inserting a new record...");
             rs.moveToInsertRow();
             rs.updateString("first","John");
             rs.updateString("last","Paul");
             rs.updateInt("age",40);
             // Commit row
             rs.insertRow();
    
             System.out.println("List result set showing new set...");
             printResultSet(rs);
    
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    List result set for reference....
    ID: 1, Age: 18, First: Zara, Last: Ali
    ID: 2, Age: 25, First: Mahnaz, Last: Fatma
    ID: 3, Age: 30, First: Zaid, Last: Khan
    ID: 4, Age: 28, First: Sumit, Last: Mittal
    
    List result set showing new ages...
    ID: 1, Age: 23, First: Zara, Last: Ali
    ID: 2, Age: 30, First: Mahnaz, Last: Fatma
    ID: 3, Age: 35, First: Zaid, Last: Khan
    ID: 4, Age: 33, First: Sumit, Last: Mittal
    
    Inserting a new record...
    List result set showing new set...
    ID: 1, Age: 23, First: Zara, Last: Ali
    ID: 2, Age: 30, First: Mahnaz, Last: Fatma
    ID: 3, Age: 35, First: Zaid, Last: Khan
    ID: 4, Age: 33, First: Sumit, Last: Mittal
    ID: 5, Age: 40, First: John, Last: Paul
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Java & MySQL – Select Records nhận dự án làm có lương

    Java & MySQL – Select Records Example



    This chapter provides an example on how to select/ fetch records from a table using JDBC application. Before executing the following example, make sure you have the following in place −

    • To execute the following example you can replace the username and password with your actual user name and password.

    • Your MySQL database you are using is up and running.

    Required Steps

    The following steps are required to create a new Database using JDBC application −

    • Import the packages − Requires that you include the packages containing the JDBC classes needed for database programming. Most often, using import java.sql.* will suffice.

    • Open a connection − Requires using the DriverManager.getConnection() method to create a Connection object, which represents a physical connection with a database server.

    • Execute a query − Requires using an object of type Statement for building and submitting an SQL statement to select (i.e. fetch ) records from a table.

    • Extract Data − Once SQL query is executed, you can fetch records from the table.

    • Clean up the environment − try with resources automatically closes the resources.

    Sample Code

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
       static final String QUERY = "SELECT id, first, last, age FROM Registration";
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(QUERY);
          ) {
             while(rs.next()){
                //Display values
                System.out.print("ID: " + rs.getInt("id"));
                System.out.print(", Age: " + rs.getInt("age"));
                System.out.print(", First: " + rs.getString("first"));
                System.out.println(", Last: " + rs.getString("last"));
             }
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    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
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Java & MySQL – View Result Set nhận dự án làm có lương

    Java & MySQL – Viewing a ResultSet



    The ResultSet interface contains dozens of methods for getting the data of the current row.

    There is a get method for each of the possible data types, and each get method has two versions −

    • One that takes in a column name.

    • One that takes in a column index.

    For example, if the column you are interested in viewing contains an int, you need to use one of the getInt() methods of ResultSet −

    S.N. Methods & Description
    1 public int getInt(String columnName) throws SQLException

    Returns the int in the current row in the column named columnName.

    2 public int getInt(int columnIndex) throws SQLException

    Returns the int in the current row in the specified column index. The column index starts at 1, meaning the first column of a row is 1, the second column of a row is 2, and so on.

    Similarly, there are get methods in the ResultSet interface for each of the eight Java primitive types, as well as common types such as java.lang.String, java.lang.Object, and java.net.URL.

    There are also methods for getting SQL data types java.sql.Date, java.sql.Time, java.sql.TimeStamp, java.sql.Clob, and java.sql.Blob. Check the documentation for more information about using these SQL data types.

    Following is the example which makes use of few viewing methods described.

    This sample code has been written based on the environment and database setup done in the previous chapters.

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
       static final String QUERY = "SELECT id, first, last, age FROM Employees";
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement(
             ResultSet.TYPE_SCROLL_INSENSITIVE,
             ResultSet.CONCUR_READ_ONLY);
             ResultSet rs = stmt.executeQuery(QUERY);
          ) {
             // Move cursor to the last row.
             System.out.println("Moving cursor to the last...");
             rs.last();
    
             // Extract data from result set
             System.out.println("Displaying record...");
             //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);
    
             // Move cursor to the first row.
             System.out.println("Moving cursor to the first row...");
             rs.first();
    
             // Extract data from result set
             System.out.println("Displaying record...");
             // Retrieve by column name
             id  = rs.getInt("id");
             age = rs.getInt("age");
             first = rs.getString("first");
             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);
             // Move cursor to the first row.
    
             System.out.println("Moving cursor to the next row...");
             rs.next();
    
             // Extract data from result set
             System.out.println("Displaying record...");
             id  = rs.getInt("id");
             age = rs.getInt("age");
             first = rs.getString("first");
             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);
    
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    Moving cursor to the last...
    Displaying record...
    ID: 103, Age: 30, First: Sumit, Last: Mittal
    Moving cursor to the first row...
    Displaying record...
    ID: 100, Age: 18, First: Zara, Last: Ali
    Moving cursor to the next row...
    Displaying record...
    ID: 101, Age: 25, First: Mehnaz, Last: Fatma
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Java & MySQL – Update Records nhận dự án làm có lương

    Java & MySQL – Update Records Example



    This chapter provides an example on how to update records in a table using JDBC application. Before executing the following example, make sure you have the following in place −

    • To execute the following example you can replace the username and password with your actual user name and password.

    • Your MySQL database you are using is up and running.

    Required Steps

    The following steps are required to create a new Database using JDBC application −

    • Import the packages − Requires that you include the packages containing the JDBC classes needed for database programming. Most often, using import java.sql.* will suffice.

    • Open a connection − Requires using the DriverManager.getConnection() method to create a Connection object, which represents a physical connection with a database server.

    • Execute a query − Requires using an object of type Statement for building and submitting an SQL statement to update records in a table. This Query makes use of IN and WHERE clause to update conditional records.

    • Clean up the environment − try with resources automatically closes the resources.

    Sample Code

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
       static final String QUERY = "SELECT id, first, last, age FROM Registration";
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
          ) {
             String sql = "UPDATE Registration " +
                "SET age = 30 WHERE id in (100, 101)";
             stmt.executeUpdate(sql);
             ResultSet rs = stmt.executeQuery(QUERY);
             while(rs.next()){
                //Display values
                System.out.print("ID: " + rs.getInt("id"));
                System.out.print(", Age: " + rs.getInt("age"));
                System.out.print(", First: " + rs.getString("first"));
                System.out.println(", Last: " + rs.getString("last"));
             }
             rs.close();
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    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
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Java & MySQL – Transactions nhận dự án làm có lương

    Java & MySQL – Transactions



    If your JDBC Connection is in auto-commit mode, which it is by default, then every SQL statement is committed to the database upon its completion.

    That may be fine for simple applications, but there are three reasons why you may want to turn off the auto-commit and manage your own transactions −

    • To increase performance.

    • To maintain the integrity of business processes.

    • To use distributed transactions.

    Transactions enable you to control if, and when, changes are applied to the database. It treats a single SQL statement or a group of SQL statements as one logical unit, and if any statement fails, the whole transaction fails.

    To enable manual- transaction support instead of the auto-commit mode that the JDBC driver uses by default, use the Connection object”s setAutoCommit() method. If you pass a boolean false to setAutoCommit( ), you turn off auto-commit. You can pass a boolean true to turn it back on again.

    For example, if you have a Connection object named conn, code the following to turn off auto-commit −

    conn.setAutoCommit(false);
    

    Commit & Rollback

    Once you are done with your changes and you want to commit the changes then call commit() method on connection object as follows −

    conn.commit( );
    

    Otherwise, to roll back updates to the database made using the Connection named conn, use the following code −

    conn.rollback( );
    

    Using Savepoints

    The new JDBC 3.0 Savepoint interface gives you the additional transactional control.

    When you set a savepoint you define a logical rollback point within a transaction. If an error occurs past a savepoint, you can use the rollback method to undo either all the changes or only the changes made after the savepoint.

    The Connection object has two new methods that help you manage savepoints −

    • setSavepoint(String savepointName) − Defines a new savepoint. It also returns a Savepoint object.

    • releaseSavepoint(Savepoint savepointName) − Deletes a savepoint. Notice that it requires a Savepoint object as a parameter. This object is usually a savepoint generated by the setSavepoint() method.

    There is one rollback (String savepointName) method, which rolls back work to the specified savepoint.


    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Java & MySQL – Delete Records nhận dự án làm có lương

    Java & MySQL – Delete Records Example



    This chapter provides an example on how to delete records from a table using JDBC application. Before executing following example, make sure you have the following in place −

    • To execute the following example you can replace the username and password with your actual user name and password.

    • Your MySQL database you are using is up and running.

    Required Steps

    The following steps are required to create a new Database using JDBC application −

    • Import the packages − Requires that you include the packages containing the JDBC classes needed for database programming. Most often, using import java.sql.* will suffice.

    • Register the JDBC driver − Requires that you initialize a driver so you can open a communications channel with the database.

    • Open a connection − Requires using the DriverManager.getConnection() method to create a Connection object, which represents a physical connection with a database server.

    • Execute a query − Requires using an object of type Statement for building and submitting an SQL statement to delete records from a table. This Query makes use of the WHERE clause to delete conditional records.

    • Clean up the environment − try with resources automatically closes the resources.

    Sample Code

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
       static final String QUERY = "SELECT id, first, last, age FROM Registration";
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
          ) {
             String sql = "DELETE FROM Registration " +
                "WHERE id = 101";
             stmt.executeUpdate(sql);
             ResultSet rs = stmt.executeQuery(QUERY);
             while(rs.next()){
                //Display values
                System.out.print("ID: " + rs.getInt("id"));
                System.out.print(", Age: " + rs.getInt("age"));
                System.out.print(", First: " + rs.getString("first"));
                System.out.println(", Last: " + rs.getString("last"));
             }
             rs.close();
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    ID: 100, Age: 30, First: Zara, Last: Ali
    ID: 102, Age: 30, First: Zaid, Last: Khan
    ID: 103, Age: 28, First: Sumit, Last: Mittal
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Java & MySQL – SavePoint Transactions nhận dự án làm có lương

    Java & MySQL – SavePoint



    The new JDBC 3.0 Savepoint interface gives you the additional transactional control. Most modern DBMS, support savepoints within their environments such as Oracle”s PL/SQL.

    When you set a savepoint you define a logical rollback point within a transaction. If an error occurs past a savepoint, you can use the rollback method to undo either all the changes or only the changes made after the savepoint.

    The Connection object has two new methods that help you manage savepoints −

    • setSavepoint(String savepointName) − Defines a new savepoint. It also returns a Savepoint object.

    • releaseSavepoint(Savepoint savepointName) − Deletes a savepoint. Notice that it requires a Savepoint object as a parameter. This object is usually a savepoint generated by the setSavepoint() method.

    There is one rollback (String savepointName) method, which rolls back work to the specified savepoint.

    The following example illustrates the use of a Savepoint object −

    try{
       //Assume a valid connection object conn
       conn.setAutoCommit(false);
       Statement stmt = conn.createStatement();
    
       //set a Savepoint
       Savepoint savepoint1 = conn.setSavepoint("Savepoint1");
       String SQL = "INSERT INTO Employees " +
                    "VALUES (106, 20, ''Rita'', ''Tez'')";
       stmt.executeUpdate(SQL);
       //Submit a malformed SQL statement that breaks
       String SQL = "INSERTED IN Employees " +
                    "VALUES (107, 22, ''Sita'', ''Tez'')";
       stmt.executeUpdate(SQL);
       // If there is no error, commit the changes.
       conn.commit();
    
    }catch(SQLException se){
       // If there is any error.
       conn.rollback(savepoint1);
    }
    

    In this case, none of the above INSERT statement would success and everything would be rolled back.

    Following is the example, which makes use of setSavepoint and rollback described.

    This sample code has been written based on the environment and database setup done in the previous chapters.

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Savepoint;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
       static final String QUERY = "SELECT id, first, last, age FROM Employees";
       static final String DELETE_QUERY = "DELETE FROM Employees WHERE ID = 8";
       static final String DELETE_QUERY_1 = "DELETE FROM Employees WHERE ID = 9";
    
       public static void printResultSet(ResultSet rs) throws SQLException{
          // Ensure we start with first row
          rs.beforeFirst();
          while(rs.next()){
             // Display values
             System.out.print("ID: " + rs.getInt("id"));
             System.out.print(", Age: " + rs.getInt("age"));
             System.out.print(", First: " + rs.getString("first"));
             System.out.println(", Last: " + rs.getString("last"));
          }
          System.out.println();
       }
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement(
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_UPDATABLE);
          ) {
    
             conn.setAutoCommit(false);
             ResultSet rs = stmt.executeQuery(QUERY);
             System.out.println("List result set for reference....");
             printResultSet(rs);
    
             // delete row having ID = 8
             // But save point before doing so.
             Savepoint savepoint1 = conn.setSavepoint("ROWS_DELETED_1");
             System.out.println("Deleting row....");
             stmt.executeUpdate(DELETE_QUERY);
             // Rollback the changes after save point 1.
             conn.rollback(savepoint1);
    
             // delete rows having ID = 9
             // But save point before doing so.
             conn.setSavepoint("ROWS_DELETED_2");
             System.out.println("Deleting row....");
    
             stmt.executeUpdate(DELETE_QUERY_1);
    
             rs = stmt.executeQuery(QUERY);
             System.out.println("List result set for reference....");
             printResultSet(rs);
    
             // Clean-up environment
             rs.close();
    
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now, let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    List result set for reference....
    ID: 1, Age: 23, First: Zara, Last: Ali
    ID: 2, Age: 30, First: Mahnaz, Last: Fatma
    ID: 3, Age: 35, First: Zaid, Last: Khan
    ID: 4, Age: 33, First: Sumit, Last: Mittal
    ID: 5, Age: 40, First: John, Last: Paul
    ID: 7, Age: 20, First: Sita, Last: Singh
    ID: 8, Age: 20, First: Rita, Last: Tez
    ID: 9, Age: 20, First: Sita, Last: Singh
    
    Deleting row....
    Deleting row....
    List result set for reference....
    ID: 1, Age: 23, First: Zara, Last: Ali
    ID: 2, Age: 30, First: Mahnaz, Last: Fatma
    ID: 3, Age: 35, First: Zaid, Last: Khan
    ID: 4, Age: 33, First: Sumit, Last: Mittal
    ID: 5, Age: 40, First: John, Last: Paul
    ID: 7, Age: 20, First: Sita, Last: Singh
    ID: 8, Age: 20, First: Rita, Last: Tez
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Batch Processing – Statement nhận dự án làm có lương

    Java & MySQL – Batching with Statement Object



    Here is a typical sequence of steps to use Batch Processing with Statement Object −

    • Create a Statement object using either createStatement() methods.

    • Set auto-commit to false using setAutoCommit().

    • Add as many as SQL statements you like into batch using addBatch() method on created statement object.

    • Execute all the SQL statements using executeBatch() method on created statement object.

    • Finally, commit all the changes using commit() method.

    This sample code has been written based on the environment and database setup done in the previous chapters.

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
    
       public static void printResultSet(ResultSet rs) throws SQLException{
          // Ensure we start with first row
          rs.beforeFirst();
          while(rs.next()){
             // Display values
             System.out.print("ID: " + rs.getInt("id"));
             System.out.print(", Age: " + rs.getInt("age"));
             System.out.print(", First: " + rs.getString("first"));
             System.out.println(", Last: " + rs.getString("last"));
          }
          System.out.println();
       }
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement(
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_UPDATABLE)
                ) {
             conn.setAutoCommit(false);
    
             ResultSet rs = stmt.executeQuery("Select * from Employees");
             printResultSet(rs);
    
             // Create SQL statement
             String SQL = "INSERT INTO Employees (first, last, age) " +
                "VALUES(''Zia'', ''Ali'', 30)";
             // Add above SQL statement in the batch.
             stmt.addBatch(SQL);
    
             // Create one more SQL statement
             SQL = "INSERT INTO Employees (first, last, age) " +
                "VALUES(''Raj'', ''Kumar'', 35)";
             // Add above SQL statement in the batch.
             stmt.addBatch(SQL);
    
             // Create one more SQL statement
             SQL = "UPDATE Employees SET age = 35 " +
             "WHERE id = 7";
             // Add above SQL statement in the batch.
             stmt.addBatch(SQL);
    
             // Create an int[] to hold returned values
             int[] count = stmt.executeBatch();
    
             //Explicitly commit statements to apply changes
             conn.commit();
    
             rs = stmt.executeQuery("Select * from Employees");
             printResultSet(rs);
    
             stmt.close();
             rs.close();
    
          } catch (SQLException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    ID: 1, Age: 23, First: Zara, Last: Ali
    ID: 2, Age: 30, First: Mahnaz, Last: Fatma
    ID: 3, Age: 35, First: Zaid, Last: Khan
    ID: 4, Age: 33, First: Sumit, Last: Mittal
    ID: 5, Age: 40, First: John, Last: Paul
    ID: 7, Age: 20, First: Sita, Last: Singh
    ID: 8, Age: 20, First: Rita, Last: Tez
    ID: 9, Age: 20, First: Sita, Last: Singh
    
    ID: 1, Age: 23, First: Zara, Last: Ali
    ID: 2, Age: 30, First: Mahnaz, Last: Fatma
    ID: 3, Age: 35, First: Zaid, Last: Khan
    ID: 4, Age: 33, First: Sumit, Last: Mittal
    ID: 5, Age: 40, First: John, Last: Paul
    ID: 7, Age: 35, First: Sita, Last: Singh
    ID: 8, Age: 20, First: Rita, Last: Tez
    ID: 9, Age: 20, First: Sita, Last: Singh
    ID: 10, Age: 30, First: Zia, Last: Ali
    ID: 11, Age: 35, First: Raj, Last: Kumar
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc

  • Khóa học miễn phí Java & MySQL – Streaming Data nhận dự án làm có lương

    Java & MySQL – Streaming Data



    A PreparedStatement object has the ability to use input and output streams to supply parameter data. This enables you to place entire files into database columns that can hold large values, such as CLOB and BLOB data types.

    There are following methods, which can be used to stream data −

    • setAsciiStream() − This method is used to supply large ASCII values.

    • setCharacterStream() − This method is used to supply large UNICODE values.

    • setBinaryStream() − This method is used to supply large binary values.

    The setXXXStream() method requires an extra parameter, the file size, besides the parameter placeholder. This parameter informs the driver how much data should be sent to the database using the stream.

    This example would create a database table XML_Data and then XML content would be written into this table.

    Copy and paste the following example in TestApplication.java, compile and run as follows −

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/TUTORIALSPOINT";
       static final String USER = "guest";
       static final String PASS = "guest123";
       static final String QUERY = "SELECT Data FROM XML_Data WHERE id=100";
       static final String INSERT_QUERY="INSERT INTO XML_Data VALUES (?,?)";
       static final String CREATE_TABLE_QUERY = "CREATE TABLE XML_Data (id INTEGER, Data LONG)";
       static final String DROP_TABLE_QUERY = "DROP TABLE XML_Data";
       static final String XML_DATA = "<Employee><id>100</id><first>Zara</first><last>Ali</last><Salary>10000</Salary><Dob>18-08-1978</Dob></Employee>";
    
       public static void createXMLTable(Statement stmt)
          throws SQLException{
          System.out.println("Creating XML_Data table..." );
          //Drop table first if it exists.
          try{
             stmt.executeUpdate(DROP_TABLE_QUERY);
          }catch(SQLException se){
          }
          stmt.executeUpdate(CREATE_TABLE_QUERY);
       }
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
             PreparedStatement pstmt = conn.prepareStatement(INSERT_QUERY);
          ) {
             createXMLTable(stmt);
    
             ByteArrayInputStream bis = new ByteArrayInputStream(XML_DATA.getBytes());
    
             pstmt.setInt(1,100);
             pstmt.setAsciiStream(2,bis,XML_DATA.getBytes().length);
             pstmt.execute();
    
             //Close input stream
             bis.close();
    
             ResultSet rs = stmt.executeQuery(QUERY);
             // Get the first row
             if (rs.next ()){
                //Retrieve data from input stream
                InputStream xmlInputStream = rs.getAsciiStream (1);
                int c;
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                while (( c = xmlInputStream.read ()) != -1)
                   bos.write(c);
                //Print results
                System.out.println(bos.toString());
             }
             // Clean-up environment
             rs.close();
    
          } catch (SQLException | IOException e) {
             e.printStackTrace();
          }
       }
    }
    

    Now let us compile the above example as follows −

    C:>javac TestApplication.java
    C:>
    

    When you run TestApplication, it produces the following result −

    C:>java TestApplication
    Creating XML_Data table...
    <Employee><id>100</id><first>Zara</first><last>Ali</last><Salary>10000</Salary><Dob>18-08-1978</Dob></Employee>
    C:>
    

    Khóa học lập trình tại Toidayhoc vừa học vừa làm dự án vừa nhận lương: Khóa học lập trình nhận lương tại trung tâm Toidayhoc