Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!novia!news-out.readnews.com!news-xxxfer.readnews.com!news-out.news.tds.net!newsreading01.news.tds.net!86597e80!not-for-mail From: "Yogi" Subject: Java Database connection Message-ID: X-Comment-To: comp.lang.java.databases Newsgroups: comp.lang.java.databases Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.15a-Win32 NewsLink 1.92] Lines: 162 Date: Wed, 27 Apr 2011 15:23:14 GMT NNTP-Posting-Host: 96.60.20.240 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1303917794 96.60.20.240 (Wed, 27 Apr 2011 10:23:14 CDT) NNTP-Posting-Date: Wed, 27 Apr 2011 10:23:14 CDT Organization: TDS.net Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.databases:353 To: comp.lang.java.databases Hi, I am new to java and db connection pooling. I tried using Apache's DBCP for connection pool for my web application. Was trying to do similar thing for a standalone server (not a web based). I tried using DBCP but i am getting strange results. In my string variables, i am getting "???" as output whereas for int variables i am getting correct values when i m trying to read from database. Here is the snippet code: I have a package "com.engine". In this package, 1. I am having EngineDBConnection which is responsible to pool connections. 2. "EngineDBManager" class takes care of process user's queries and calls required procedures and db constructs 3. "Test" is the actual code which runs and gets required fields and displays to client. >>>>>>>>>>>>>. package com.engine; import org.apache.commons.dbcp.BasicDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; public class EngineDBConnection { private static String dbURL = "jdbc:oracle:thin:user/pwd@localhost: 1521:orcl"; static DataSource dataSource = null; public static void createDataSource(){ // create db connection in constructor dataSource = setupDataSource(dbURL); } public static Connection getConnection() { Connection conn = null; try { if (dataSource != null) { conn = dataSource.getConnection(); } else { return null; } } catch (Exception e) { e.printStackTrace(); } return conn; } public static DataSource setupDataSource(String connectURI) { BasicDataSource ds = new BasicDataSource(); System.out.println("coming in setupdatasource"); ds.setDriverClassName("oracle.jdbc.driver.OracleDriver"); ds.setUsername("user"); ds.setPassword("pwd"); ds.setUrl(connectURI); return ds; } public static void shutdownDataSource(DataSource ds) throws SQLException { BasicDataSource bds = (BasicDataSource) ds; bds.close(); } } ------------------------- package com.engine; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Types; import java.util.ArrayList; import java.util.List; import oracle.sql.STRUCT; import com.dbobjs.DInfo; public class EngineDBManager { public static List getDInfo(){ Connection conn = null; conn = EngineDBConnection.getConnection(); CallableStatement cst = null; List dList = null; int result = -9; try{ cst = conn.prepareCall("begin pkg_admin.p_get_info(?,?); end;"); cst.registerOutParameter(1, Types.ARRAY, "VARRAY_DINFO"); cst.registerOutParameter(2, Types.INTEGER); cst.execute(); result = cst.getInt(2); if (result != 0) { return null; } Object structs[] = (Object[])(cst.getArray(1).getArray()); dList = new ArrayList(structs.length); for (int i = 0; i < structs.length; i++) { DInfo map = (DInfo)DInfo.readStruct((STRUCT)structs[i]); dList.add(map); } cst.close(); conn.close(); }catch (Exception e) { e.printStackTrace(); } return dList; } } ------------------------------- package com.engine; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Types; import java.util.List; import com.dbobjs.DInfo; public class Test { public Test(){ EngineDBConnection.createDataSource(); } public static void main(String args[]){ Test t1 = new Test(); List dList = EngineDBManager.getDInfo(); DInfo d = null; if (dList == null){ System.out.println("DInfo is null"); }else{ for (int i=0;i < dList.size(); i++){ d = (DInfo) dList.get(i); System.out.println("Id=" + d.getDID() + " Desc=" + dist.getDDesc()); } } } >>>>>>>>>>>>>>>>>>>>> when I am printing output in "Test" class, I am getting correct Id but Desc is giving me "???". I tried executing oracle procedure from oracle and it is working perfectly fine. Am i missing something here? Please help. --- * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet! --- Synchronet 3.15a-Win32 NewsLink 1.92 Time Warp of the Future BBS - telnet://time.synchro.net:24