Author: alien

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

    Java & MySQL – Drop Database Example



    This chapter provides an example on how to drop an existing Database using JDBC application. Before executing the following example, make sure you have the following in place −

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

    • Your MySQL is up and running.

    NOTE − This is a serious operation and you have to make a firm decision before proceeding to delete a database because everything you have in your database would be lost.

    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.

    • Deleting a database does not require database name to be in your database URL. Following example would delete STUDENTS database.

    • Execute a query − Requires using an object of type Statement for building and submitting an SQL statement to delete the database.

    • 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.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/";
       static final String USER = "guest";
       static final String PASS = "guest123";
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
          ) {
             String sql = "DROP DATABASE STUDENTS";
             stmt.executeUpdate(sql);
             System.out.println("Database dropped successfully...");
          } 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
    Database dropped successfully...
    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 – Create Database nhận dự án làm có lương

    Java & MySQL – Create Database Example



    This tutorial provides an example on how to create a Database using JDBC application. Before executing the following example, make sure you have the following in place −

    • You should have admin privilege to create a database in the given schema. To execute the following example, you need to replace the username and password with your actual user name and password.

    • Your MySQL 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 the database server.

    • To create a new database, you need not give any database name while preparing database URL as mentioned in the below example.

    • Execute a query − Requires using an object of type Statement for building and submitting an SQL statement to the database.

    • 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.SQLException;
    import java.sql.Statement;
    
    public class TestApplication {
       static final String DB_URL = "jdbc:mysql://localhost/";
       static final String USER = "guest";
       static final String PASS = "guest123";
    
       public static void main(String[] args) {
          // Open a connection
          try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
          ) {
             String sql = "CREATE DATABASE STUDENTS";
             stmt.executeUpdate(sql);
             System.out.println("Database created successfully...");
          } 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
    Database created successfully...
    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 – Commit & Rollback nhận dự án làm có lương

    Java & MySQL – 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( );
    

    The following example illustrates the use of a commit and rollback object −

    try{
       //Assume a valid connection object conn
       conn.setAutoCommit(false);
       Statement stmt = conn.createStatement();
    
       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'', ''Singh'')";
       stmt.executeUpdate(SQL);
       // If there is no error.
       conn.commit();
    }catch(SQLException se){
       // If there is any error.
       conn.rollback();
    }
    

    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 commit 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.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 INSERT_QUERY = "INSERT INTO Employees (first, last, age) values(''Rita'', ''Tez'', 20)";
       static final String INSERT_QUERY_2 = "INSERT INTO Employees (first, last, age) values(''Sita'', ''Singh'', 20)";
    
       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) {
    
          Connection conn = null;
          Statement stmt = null;
          try{
             // Open a connection
             System.out.println("Connecting to database...");
             conn = DriverManager.getConnection(DB_URL,USER,PASS);
    
             // Set auto commit as false.
             conn.setAutoCommit(false);
    
             // Execute a query to create statment with
             // required arguments for RS example.
             System.out.println("Creating statement...");
             stmt = conn.createStatement(
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_UPDATABLE);
    
             // INSERT a row into Employees table
             System.out.println("Inserting one row....");
             stmt.executeUpdate(INSERT_QUERY);
    
             // INSERT one more row into Employees table
             stmt.executeUpdate(INSERT_QUERY_2);
    
             // Commit data here.
             System.out.println("Commiting data here....");
             conn.commit();
    
             // Now list all the available records.
             String sql = "SELECT id, first, last, age FROM Employees";
             ResultSet rs = stmt.executeQuery(sql);
             System.out.println("List result set for reference....");
             printResultSet(rs);
    
             // Clean-up environment
             rs.close();
             stmt.close();
             conn.close();
          }catch(SQLException se){
             se.printStackTrace();
             // If there is an error then rollback the changes.
             System.out.println("Rolling back data here....");
             try{
                if(conn!=null)
                   conn.rollback();
                }catch(SQLException se2){
                   se2.printStackTrace();
                }
             }catch(Exception e){
                e.printStackTrace();
             }finally{
                // finally block used to close resources
             try{
                if(stmt!=null)
                   stmt.close();
             }catch(SQLException se2){
                se2.printStackTrace();
             }
                try{
                   if(conn!=null)
                      conn.close();
                }catch(SQLException se){
                   se.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
    Connecting to database...
    Creating statement...
    Inserting one row....
    Commiting data here....
    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: 6, Age: 20, First: Rita, Last: Tez
    ID: 7, Age: 20, First: Sita, Last: Singh
    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 – PreparedStatement nhận dự án làm có lương

    Java & MySQL – Batching with PrepareStatement Object



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

    • Create SQL statements with placeholders.

    • Create PrepareStatement object using either prepareStatement() 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.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 INSERT_QUERY = "INSERT INTO Employees(first,last,age) VALUES(?, ?, ?)";
    
       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);
             PreparedStatement stmt = conn.prepareStatement(INSERT_QUERY,
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_UPDATABLE)
          ) {
             conn.setAutoCommit(false);
    
             ResultSet rs = stmt.executeQuery("Select * from Employees");
             printResultSet(rs);
    
             // Set the variables
             stmt.setString( 1, "Pappu" );
             stmt.setString( 2, "Singh" );
             stmt.setInt( 3, 33 );
             // Add it to the batch
             stmt.addBatch();
    
             // Set the variables
             stmt.setString( 1, "Pawan" );
             stmt.setString( 2, "Singh" );
             stmt.setInt( 3, 31 );
             // Add it to the batch
             stmt.addBatch();
    
             // 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: 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
    
    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
    ID: 12, Age: 33, First: Pappu, Last: Singh
    ID: 13, Age: 31, First: Pawan, Last: Singh
    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 – Batch Processing nhận dự án làm có lương

    Java & MySQL – Batch Processing



    Batch Processing allows you to group related SQL statements into a batch and submit them with one call to the database.

    When you send several SQL statements to the database at once, you reduce the amount of communication overhead, thereby improving performance.

    • JDBC drivers are not required to support this feature. You should use the DatabaseMetaData.supportsBatchUpdates() method to determine if the target database supports batch update processing. The method returns true if your JDBC driver supports this feature.

    • The addBatch() method of Statement, PreparedStatement, and CallableStatement is used to add individual statements to the batch. The executeBatch() is used to start the execution of all the statements grouped together.

    • The executeBatch() returns an array of integers, and each element of the array represents the update count for the respective update statement.

    • Just as you can add statements to a batch for processing, you can remove them with the clearBatch() method. This method removes all the statements you added with the addBatch() method. However, you cannot selectively choose which statement to remove.

    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.

    Example

    The following code snippet provides an example of a batch update using Statement object −

    // Create statement object
    Statement stmt = conn.createStatement();
    
    // Set auto-commit to false
    conn.setAutoCommit(false);
    
    // Create SQL statement
    String SQL = "INSERT INTO Employees (id, first, last, age) " +
                 "VALUES(200,''Zia'', ''Ali'', 30)";
    // Add above SQL statement in the batch.
    stmt.addBatch(SQL);
    
    // Create one more SQL statement
    String SQL = "INSERT INTO Employees (id, first, last, age) " +
                 "VALUES(201,''Raj'', ''Kumar'', 35)";
    // Add above SQL statement in the batch.
    stmt.addBatch(SQL);
    
    // Create one more SQL statement
    String SQL = "UPDATE Employees SET age = 35 " +
                 "WHERE id = 100";
    // 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();
    

    Batching with PrepareStatement Object

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

    • Create SQL statements with placeholders.

    • Create PrepareStatement object using either prepareStatement() 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.

    The following code snippet provides an example of a batch update using PrepareStatement object −

    // Create SQL statement
    String SQL = "INSERT INTO Employees (id, first, last, age) " +
                 "VALUES(?, ?, ?, ?)";
    
    // Create PrepareStatement object
    PreparedStatemen pstmt = conn.prepareStatement(SQL);
    
    //Set auto-commit to false
    conn.setAutoCommit(false);
    
    // Set the variables
    pstmt.setInt( 1, 400 );
    pstmt.setString( 2, "Pappu" );
    pstmt.setString( 3, "Singh" );
    pstmt.setInt( 4, 33 );
    // Add it to the batch
    pstmt.addBatch();
    
    // Set the variables
    pstmt.setInt( 1, 401 );
    pstmt.setString( 2, "Pawan" );
    pstmt.setString( 3, "Singh" );
    pstmt.setInt( 4, 31 );
    // Add it to the batch
    pstmt.addBatch();
    
    //add more batches
    .
    .
    .
    .
    //Create an int[] to hold returned values
    int[] count = stmt.executeBatch();
    
    //Explicitly commit statements to apply changes
    conn.commit();
    

    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

  • 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 – 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í 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 – 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