AdSense

AdSense3

Monday, 12 January 2015

ResultSetMetaData Interface

The metadata means data about data i.e. we can get further information from the data.

If you have to get metadata of a table like total number of column, column name, column type etc. , ResultSetMetaData interface is useful because it provides methods to get metadata from the ResultSet object.

Commonly used methods of ResultSetMetaData interface

MethodDescription
public int getColumnCount()throws SQLExceptionit returns the total number of columns in the ResultSet object.
public String getColumnName(int index)throws SQLExceptionit returns the column name of the specified column index.
public String getColumnTypeName(int index)throws SQLExceptionit returns the column type name for the specified index.
public String getTableName(int index)throws SQLExceptionit returns the table name for the specified column index.

How to get the object of ResultSetMetaData:

The getMetaData() method of ResultSet interface returns the object of ResultSetMetaData. Syntax:
  1. public ResultSetMetaData getMetaData()throws SQLException  

Example of ResultSetMetaData interface :

  1. import java.sql.*;  
  2. class Rsmd{  
  3. public static void main(String args[]){  
  4. try{  
  5. Class.forName("oracle.jdbc.driver.OracleDriver");  
  6.   
  7. Connection con=DriverManager.getConnection(  
  8. "jdbc:oracle:thin:@localhost:1521:xe","system","oracle");  
  9.   
  10. PreparedStatement ps=con.prepareStatement("select * from emp");  
  11. ResultSet rs=ps.executeQuery();  
  12.   
  13. ResultSetMetaData rsmd=rs.getMetaData();  
  14.   
  15. System.out.println("Total columns: "+rsmd.getColumnCount());  
  16. System.out.println("Column Name of 1st column: "+rsmd.getColumnName(1));  
  17. System.out.println("Column Type Name of 1st column: "+rsmd.getColumnTypeName(1));  
  18.   
  19. con.close();  
  20.   
  21. }catch(Exception e){ System.out.println(e);}  
  22.   
  23. }  
  24. }  
Output:Total columns: 2
       Column Name of 1st column: ID
       Column Type Name of 1st column: NUMBER

Saturday, 10 January 2015

PreparedStatement interface

The PreparedStatement interface is a subinterface of Statement. It is used to execute parameterized query.

Let's see the example of parameterized query:
  1. String sql="insert into emp values(?,?,?)";  
As you can see, we are passing parameter (?) for the values. Its value will be set by calling the setter methods of PreparedStatement.

Why use PreparedStatement?

Improves performance: The performance of the application will be faster if you use PreparedStatement interface because query is compiled only once.

How to get the instance of PreparedStatement?

The prepareStatement() method of Connection interface is used to return the object of PreparedStatement. Syntax:
  1. public PreparedStatement prepareStatement(String query)throws SQLException{}  

Methods of PreparedStatement interface

The important methods of PreparedStatement interface are given below:
MethodDescription
public void setInt(int paramIndex, int value)sets the integer value to the given parameter index.
public void setString(int paramIndex, String value)sets the String value to the given parameter index.
public void setFloat(int paramIndex, float value)sets the float value to the given parameter index.
public void setDouble(int paramIndex, double value)sets the double value to the given parameter index.
public int executeUpdate()executes the query. It is used for create, drop, insert, update, delete etc.
public ResultSet executeQuery()executes the select query. It returns an instance of ResultSet.

Example of PreparedStatement interface that inserts the record

First of all create table as given below:
  1. create table emp(id number(10),name varchar2(50));  
Now insert records in this table by the code given below:
  1. import java.sql.*;  
  2. class InsertPrepared{  
  3. public static void main(String args[]){  
  4. try{  
  5. Class.forName("oracle.jdbc.driver.OracleDriver");  
  6.   
  7. Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");  
  8.   
  9. PreparedStatement stmt=con.prepareStatement("insert into Emp values(?,?)");  
  10. stmt.setInt(1,101);//1 specifies the first parameter in the query  
  11. stmt.setString(2,"Ratan");  
  12.   
  13. int i=stmt.executeUpdate();  
  14. System.out.println(i+" records inserted");  
  15.   
  16. con.close();  
  17.   
  18. }catch(Exception e){ System.out.println(e);}  
  19.   
  20. }  
  21. }  

Example of PreparedStatement interface that updates the record

  1. PreparedStatement stmt=con.prepareStatement("update emp set name=? where id=?");  
  2. stmt.setString(1,"Sonoo");//1 specifies the first parameter in the query i.e. name  
  3. stmt.setInt(2,101);  
  4.   
  5. int i=stmt.executeUpdate();  
  6. System.out.println(i+" records updated");  

Example of PreparedStatement interface that deletes the record

  1. PreparedStatement stmt=con.prepareStatement("delete from emp where id=?");  
  2. stmt.setInt(1,101);  
  3.   
  4. int i=stmt.executeUpdate();  
  5. System.out.println(i+" records deleted");  

Example of PreparedStatement interface that retrieve the records of a table

  1. PreparedStatement stmt=con.prepareStatement("select * from emp");  
  2. ResultSet rs=stmt.executeQuery();  
  3. while(rs.next()){  
  4. System.out.println(rs.getInt(1)+" "+rs.getString(2));  
  5. }  

Example of PreparedStatement to insert records until user press n

  1. import java.sql.*;  
  2. import java.io.*;  
  3. class RS{  
  4. public static void main(String args[])throws Exception{  
  5. Class.forName("oracle.jdbc.driver.OracleDriver");  
  6. Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");  
  7.   
  8. PreparedStatement ps=con.prepareStatement("insert into emp130 values(?,?,?)");  
  9.   
  10. BufferedReader br=new BufferedReader(new InputStreamReader(System.in));  
  11.   
  12. do{  
  13. System.out.println("enter id:");  
  14. int id=Integer.parseInt(br.readLine());  
  15. System.out.println("enter name:");  
  16. String name=br.readLine();  
  17. System.out.println("enter salary:");  
  18. float salary=Float.parseFloat(br.readLine());  
  19.   
  20. ps.setInt(1,id);  
  21. ps.setString(2,name);  
  22. ps.setFloat(3,salary);  
  23. int i=ps.executeUpdate();  
  24. System.out.println(i+" records affected");  
  25.   
  26. System.out.println("Do you want to continue: y/n");  
  27. String s=br.readLine();  
  28. if(s.startsWith("n")){  
  29. break;  
  30. }  
  31. }while(true);  
  32.   
  33. con.close();  
  34. }}  

Friday, 9 January 2015

ResultSet interface

The object of ResultSet maintains a cursor pointing to a particular row of data. Initially, cursor points to before the first row.

By default, ResultSet object can be moved forward only and it is not updatable.

But we can make this object to move forward and backward direction by passing either TYPE_SCROLL_INSENSITIVE or TYPE_SCROLL_SENSITIVE in createStatement(int,int) method as well as we can make this object as updatable by:
  1. Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,  
  2.                      ResultSet.CONCUR_UPDATABLE);  

Commonly used methods of ResultSet interface

1) public boolean next():is used to move the cursor to the one row next from the current position.
2) public boolean previous():is used to move the cursor to the one row previous from the current position.
3) public boolean first():is used to move the cursor to the first row in result set object.
4) public boolean last():is used to move the cursor to the last row in result set object.
5) public boolean absolute(int row):is used to move the cursor to the specified row number in the ResultSet object.
6) public boolean relative(int row):is used to move the cursor to the relative row number in the ResultSet object, it may be positive or negative.
7) public int getInt(int columnIndex):is used to return the data of specified column index of the current row as int.
8) public int getInt(String columnName):is used to return the data of specified column name of the current row as int.
9) public String getString(int columnIndex):is used to return the data of specified column index of the current row as String.
10) public String getString(String columnName):is used to return the data of specified column name of the current row as String.

Example of Scrollable ResultSet

Let’s see the simple example of ResultSet interface to retrieve the data of 3rd row.
  1. import java.sql.*;  
  2. class FetchRecord{  
  3. public static void main(String args[])throws Exception{  
  4.   
  5. Class.forName("oracle.jdbc.driver.OracleDriver");  
  6. Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");  
  7. Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
  8. ResultSet rs=stmt.executeQuery("select * from emp765");  
  9.   
  10. //getting the record of 3rd row  
  11. rs.absolute(3);  
  12. System.out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3));  
  13.   
  14. con.close();  
  15. }}  

Statement interface

The Statement interface provides methods to execute queries with the database. The statement interface is a factory of ResultSet i.e. it provides factory method to get the object of ResultSet.

Commonly used methods of Statement interface:

The important methods of Statement interface are as follows:
1) public ResultSet executeQuery(String sql): is used to execute SELECT query. It returns the object of ResultSet.
2) public int executeUpdate(String sql): is used to execute specified query, it may be create, drop, insert, update, delete etc.
3) public boolean execute(String sql): is used to execute queries that may return multiple results.
4) public int[] executeBatch(): is used to execute batch of commands.

Example of Statement interface

Let’s see the simple example of Statement interface to insert, update and delete the record.
  1. import java.sql.*;  
  2. class FetchRecord{  
  3. public static void main(String args[])throws Exception{  
  4.   
  5. Class.forName("oracle.jdbc.driver.OracleDriver");  
  6. Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");  
  7. Statement stmt=con.createStatement();  
  8.   
  9. //stmt.executeUpdate("insert into emp765 values(33,'Irfan',50000)");  
  10. //int result=stmt.executeUpdate("update emp765 set name='Vimal',salary=10000 where id=33");  
  11. int result=stmt.executeUpdate("delete from emp765 where id=33");  
  12.   
  13. System.out.println(result+" records affected");  
  14. con.close();  
  15. }}  

Thursday, 8 January 2015

DriverManager class & Connection interface

The DriverManager class acts as an interface between user and drivers. It keeps track of the drivers that are available and handles establishing a connection between a database and the appropriate driver. The DriverManager class maintains a list of Driver classes that have registered themselves by calling the method DriverManager.registerDriver().

Commonly used methods of DriverManager class:

1) public static void registerDriver(Driver driver):is used to register the given driver with DriverManager.
2) public static void deregisterDriver(Driver driver):is used to deregister the given driver (drop the driver from the list) with DriverManager.
3) public static Connection getConnection(String url):is used to establish the connection with the specified url.
4) public static Connection getConnection(String url,String userName,String password):is used to establish the connection with the specified url, username and password.


Connection interface:

A Connection is the session between java application and database. The Connection interface is a factory of Statement, PreparedStatement, and DatabaseMetaData i.e. object of Connection can be used to get the object of Statement and DatabaseMetaData. The Connection interface provide many methods for transaction management like commit(),rollback() etc.

By default, connection commits the changes after executing queries.

Commonly used methods of Connection interface:

1) public Statement createStatement(): creates a statement object that can be used to execute SQL queries.
2) public Statement createStatement(int resultSetType,int resultSetConcurrency): Creates a Statement object that will generate ResultSet objects with the given type and concurrency.
3) public void setAutoCommit(boolean status): is used to set the commit status.By default it is true.
4) public void commit(): saves the changes made since the previous commit/rollback permanent.
5) public void rollback(): Drops all changes made since the previous commit/rollback.
6) public void close(): closes the connection and Releases a JDBC resources immediately.