Wrox Home  
Search P2P Archive for: Go

  Return to Index  

servlets thread: Wrong Oracle Data Output by Calling From a Servlet (Urgen, Pls Help!!!)


Message #1 by "Buddy Ching" <holly@h...> on Fri, 16 Aug 2002 05:17:09
Please help !!!!!!!
I wrote a servlet (tomcat 4.1 --> oracle 9i) to connect Oracle 9i by JDBC, 
but the result set contained a wrong data something like 
0x35
0x6368616E20746169206D616E35
0x686F6E67206B6F6E67.

However, it worked fine if I put the same code into a simple java 
application- 
public class SQLDataExample2
{
  public static void main(String args []) throws Exception
  { .....I copied the same code to here.....}
}

And the correct result is:
5
chan tai man5
hong kong

my servlet is:

import java.sql.*;
import java.io.*;
import oracle.jdbc.*;
import oracle.sql.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.lang.*;

public class MyTest1jdbc extends HttpServlet {
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
		out.println("Begin");
		
			out.println("1");
			SQLDataExample3 aSQLDataExample3 = new    
SQLDataExample3();
		try
		{
			callSP2();
		}
		catch (Exception e)
		{
			System.out.println(e);
		}
		
	}

	public String callSP() throws SQLException {
		DriverManager.registerDriver(new 
oracle.jdbc.OracleDriver());
		Connection conn =
				  DriverManager.getConnection 
("jdbc:oracle:thin:@localhost:1520:XmlTest", "system", "password");
				conn.setAutoCommit (false);

		//fill into clob

		String query2 = "{call XMLDemo.getXML(?) }";

		OracleCallableStatement stmt2 = 
(OracleCallableStatement)conn.prepareCall(query2);

		//stmt2.registerOutParameter
(1,oracle.jdbc.driver.OracleTypes.CLOB);
		stmt2.registerOutParameter
(1,oracle.jdbc.driver.OracleTypes.VARCHAR);
		stmt2.executeQuery();

		System.out.println("xxx" + stmt2.getString(1));	
	
		stmt2.close(); 
		return stmt2.getString(1);
	}

	public StudInfo callSP2() throws SQLException {
		DriverManager.registerDriver(new 
oracle.jdbc.OracleDriver());
		Connection conn =
				  DriverManager.getConnection 
("jdbc:oracle:thin:@localhost:1520:XmlTest", "system", "password");
				conn.setAutoCommit (false);

		Dictionary map = (Dictionary)conn.getTypeMap();	
	
		try
		{
			map.put ("SYSTEM.STUDINFO",Class.forName 
("StudInfo")); 
		}
		catch(ClassNotFoundException e)
		{
			System.out.println(e);	
		}
		String query2 = "begin XMLDemo.getStudDetail(?); End;";
		System.out.println("3");
		OracleCallableStatement stmt2 = 
(OracleCallableStatement)conn.prepareCall(query2);
		System.out.println("4");
		//stmt2.registerOutParameter
(1,oracle.jdbc.driver.OracleTypes.CLOB);
		stmt2.registerOutParameter
(1,OracleTypes.STRUCT,"SYSTEM.STUDINFO");
		System.out.println("5");
		stmt2.executeQuery();
		System.out.println("6");		
		//STRUCT oStudInfo = (STRUCT) stmt2.getObject(1);	
	
		StudInfo oStudInfo = (StudInfo) stmt2.getObject(1);	
	
		System.out.println("7");
		Object s = stmt2.getObject(1);
		if (s != null) 
		{
			if (s instanceof StudInfo)
			{
			  System.out.println ("This is a StudInfo"); 
			}
			else 
			  System.out.println ("Unknown type"); 	
	 
		}
		System.out.println(oStudInfo.getSstudid());
		System.out.println(oStudInfo.getSstudname());
		System.out.println(oStudInfo.getSstudaddr());
		System.out.println("8");
		stmt2.close(); 
		return oStudInfo;
		//return stmt2.getObject(1);
	}

	public void callSP3() throws SQLException {
	// Connect
		DriverManager.registerDriver(new 
oracle.jdbc.OracleDriver ());
		OracleConnection conn = (OracleConnection)
		  DriverManager.getConnection("jdbc:oracle:oci8:@",
								
	  "system", "password");

		Dictionary map = (Dictionary)conn.getTypeMap();
		try
		{
			map.put ("SYSTEM.STUDINFO",Class.forName 
("StudInfo")); 
		}
		catch(ClassNotFoundException e)
		{
			System.out.println(e);	
		}
		System.out.println ("3"); 		 
		Statement s = conn.createStatement();
		System.out.println ("4"); 		 
		OracleResultSet rs = (OracleResultSet) 
		  s.executeQuery("select stud* from stud_tbl");
		System.out.println ("5"); 		 
		while(rs.next())
		{
		   StudInfo oStudInfo = (StudInfo) rs.getObject(1);
		   System.out.println("StudId: " + oStudInfo.getSstudid 
() + " StudName: " + oStudInfo.getSstudname());
		}
		rs.close();
		s.close();
	}
}


  Return to Index