Thursday, July 9, 2009

Oracle Types access through Java Object

package com.oracleObjects.AcessOracleObjects;


import java.io.IOException;

import java.sql.*;
import java.util.List;
import java.util.Properties;

import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;
/**
* @author tzg136
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class AcessOracleObjectsUsingJava_EMP {
Connection conn = null;
String driverName ="";
String serverName = "";
String username ="";
String password = "";

String portNumber ="";
String sid = "";
String databaseName = "";

public AcessOracleObjectsUsingJava_EMP()
{
Properties configFile = new Properties();
try {
configFile.load(AcessOracleObjectsUsingJava_EMP.class.getClassLoader().getResourceAsStream("config.properties"));
driverName =configFile.getProperty("driverName");
serverName = configFile.getProperty("serverName");
username =configFile.getProperty("username");
password = configFile.getProperty("password");
portNumber =configFile.getProperty("portNumber");
sid = configFile.getProperty("sid");
databaseName = configFile.getProperty("databaseName");

} catch (IOException e) {
e.printStackTrace();
}


}
public Connection getConnection()
{
try
{
Class.forName(driverName);
String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
conn = DriverManager.getConnection(url, username, password);
System.out.println("Connected Sucessfully");

}
catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException "+e.getMessage());

} catch (SQLException e) {
System.out.println("SQl Syntaxt Error "+e.getMessage());

}
catch (Exception e) {
System.out.println("Exception "+e.getMessage());

}
return conn;
}
public void insertTableObjectValue(Emp objEmp)
{
try {
Object objArray[] = new Object[4];
objArray[0] = objEmp.getEmp_id();
objArray[1] = objEmp.getEmp_Name();
objArray[2] = objEmp.getAge();
objArray[3] = new Integer(objEmp.getSalary());

StructDescriptor colStructDesc = StructDescriptor.createDescriptor("OBJ_TYPE_EMP", conn);

oracle.sql.STRUCT colStruct = new STRUCT(colStructDesc,conn, objArray);

PreparedStatement prepa_stmt= conn.prepareStatement( "INSERT INTO TABLE_EMP_OBJ VALUES (?)");
prepa_stmt.setObject(1,colStruct); // Bind the Java Object to the above Statement ps.executeUpdate();
prepa_stmt.executeUpdate();


} catch (SQLException e) {
System.out.println("SQLException"+ e.getMessage());
}
catch (Exception e) {
System.out.println("Exception"+ e.getMessage());
}
}



public void createTableWithObject()
{
/*
*
* CREATE TYPE OBJ_TYPE_EMP as OBJECT (
EMP_ID VARCHAR2(40),
EMP_NAME VARCHAR2(40),
AGE VARCHAR2(10) ,
SALARY NUMBER )

CREATE TABLE TABLE_EMP_OBJ (ObjEmp OBJ_TYPE_EMP )
*/
}

public void selectTableObjectValue()
{
try {



Statement stmt = conn.createStatement();

// Select rows from object1_table
ResultSet resultSet = stmt.executeQuery("SELECT * FROM TABLE_EMP_OBJ");

// OracleResultSet resultSet = (OracleResultSet)pst.executeQuery();

java.util.Hashtable mymap = new java.util.Hashtable();
Class obj = Class.forName("com.oracleObjects.AcessOracleObjects.Emp");
// Map the loaded java class to the object-type
mymap.put ("OBJ_TYPE_EMP", obj);

// Get the OBJECT values from each row
while (resultSet.next())
{
Emp objEmp;
objEmp = (Emp)resultSet.getObject(1, mymap);
System.out.println(""+objEmp.getEmp_Name());
System.out.println(""+objEmp.getAge());
}


}
catch (SQLException e) {
System.out.println("SQLException"+ e.getMessage());
e.printStackTrace();
}
catch (Exception e) {
System.out.println("Exception"+ e.getMessage());
}
}
public void closeConnection()
{
try
{
conn.close();
}
catch (Exception e) {
System.out.println("Exception"+ e.getMessage());
}

}



public static void main(String[] args) {
AcessOracleObjectsUsingJava_EMP objAccessJavaObject= new AcessOracleObjectsUsingJava_EMP();
Emp objEmp= new Emp();
objEmp.setEmp_id("1000");
objEmp.setEmp_Name("Andrew");
objEmp.setAge("34");
objEmp.setSalary(500);


Connection conn= objAccessJavaObject.getConnection();
if(args[0].equalsIgnoreCase("I"))
{
objAccessJavaObject.insertTableObjectValue(objEmp);
}
if(args[0].equalsIgnoreCase("S"))
{
objAccessJavaObject.selectTableObjectValue();
}

objAccessJavaObject.closeConnection();

}
}

No comments: