How to close database connections

I am using the following code to connect to database. I can either pass JNDIName or I can provide values for others by leaving JNDI name empty.
If i use JNDI name, it will use a connection from the connection pool of App Server (in my case Weblogic), but it is not releasing the connection after use. Connection remains even if I logoff from the application
String reportName = "/reports/BankBalance.rpt";
ReportClientDocument clientDoc = (ReportClientDocument) session.getAttribute(reportName);
if (clientDoc == null)
clientDoc = new ReportClientDocument();
               clientDoc.setReportAppServer(ReportClientDocument.inprocConnectionString);
// Store the report document in session
session.setAttribute(reportName, clientDoc);
String connectString = ""; // jdbc:sybase:Tds:DBSERVERNAME:9812/DBNAME?ServiceName=DBNAME
String driverName = "";    // com.sybase.jdbc3.jdbc.SybDriver
String JNDIName = "DS_APP";
String userName = "";
String password = "";
CRJavaHelper.changeDataSource(clientDoc, userName, password, connectString, driverName, JNDIName);
CRJavaHelper.logonDataSource(clientDoc, userName, password);
// Store the report document in session
session.setAttribute(reportName, clientDoc);
// Process the report
crystalReportPageViewer.processHttpRequest(request, response, application, null);

the sample shows how to clear RAS and Enterprise resources after viewing report.
1. If you use unmanaged RAS - as I can see you using setReportAppServer, then remove the enterprise related stuff : instantiating and cleaning code.
The sample code is meant to give you an idea on how you can release the resources after done with viewing report. In your case all you need to do for cleaning is call close() on ReportDocumentObject. The sample will need to be modified for your requirements.

Similar Messages

  • When and How to close database connection in JSP?

    Hi there,
    I am using MySQL and JDBC 3.0, in my system, When and How to close database connection in JSP?
    Thanks in advance.
    Lonely Wolf
    <%@ page session="true" language="java" %>
    <jsp:include page="checkauthorization.jsp" />
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    <%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
    <%--
    Execute query, with wildcard characters added to the
    parameter values used in the search criteria
    --%>
    <sql:query var="availablecomputerList" dataSource="jdbc/Bookingcomputer" scope="request">
    SELECT * FROM computer where status=0
    order by s_code
    </sql:query>
    <html>
    <head>
    <title>Search Result</title>
    </head>
    <body bgcolor="white">
    <center>
    <form action="checkin.jsp" method="post">
    <input type="submit" value="Back to Check-in Page">
    </form>
    <c:choose>
    <c:when test="${availablecomputerList.rowCount == 0}">
    Sorry, no available computer found.
    </c:when>
    <c:otherwise>
    The following available computers were found:
    <table border="1">
    <th>Computer</th>
    <th>Description</th>
    <th>Status</th>
    <c:forEach items="${availablecomputerList.rows}" var="row">
    <tr>
    <td><c:out value="${row.s_code}" /></td>
    <td><c:out value="${row.description}" /></td>
    <td><c:out value="${row.status}" /></td>
    </tr>
    </c:forEach>
    </table>
    </c:otherwise>
    </c:choose>
    </center>
    </body>
    </html>

    when should you close the connection? when you're done with it.
    how should you close the connection? like this: conn.close();
    that said, doing this in a JSP page is bad form and not recommended
    JSP's typically don't contain ANY business or data logic

  • How to close database connections in Crystal Reports

    I am using the following code to connect to database. I can either pass JNDIName or I can provide values for others by leaving JNDI name empty.
    If i use JNDI name, it will use a connection from the connection pool of App Server (in my case Weblogic), but it is not releasing the connection after use. Connection remains even if I logoff from the application. If i keep my max connections as 15 in weblogic, after clicking the page with crystal report 15 times all will remain active and users will not be able to login to the application.
    If i use connectionString and others without using JNDI Name, it directly connects to database. So it creates a connection in database server directly without using connection pool of weblogic. If i check weblogic, it shows no connection in use as expected, but if i check database, i can see the no. of connections increasing everytime a user clicks a crystal report page.
    When the connection touches the maximum allowed connection in server, every application using the same server goes down
    How can I close the connection which was created for the viewing the report?
    String reportName = "/reports/BankBalance.rpt";
    ReportClientDocument clientDoc = (ReportClientDocument) session.getAttribute(reportName);
    if (clientDoc == null)
             clientDoc = new ReportClientDocument();
             clientDoc.setReportAppServer(ReportClientDocument.inprocConnectionString);
            // Open report
            clientDoc.open(reportName, OpenReportOptions._openAsReadOnly);
           String connectString = ""; // jdbc:sybase:Tds:DBSERVERNAME:9812/DBNAME?ServiceName=DBNAME
           String driverName = "";    // com.sybase.jdbc3.jdbc.SybDriver
           String JNDIName = "DS_APP";
           String userName = "";
           String password = "";
           // Switch all tables on the main report and sub reports
           CRJavaHelper.changeDataSource(clientDoc, userName, password, connectString, driverName, JNDIName);
         // logon to database
          CRJavaHelper.logonDataSource(clientDoc, userName, password);
    // Store the report document in session
    session.setAttribute(reportName, clientDoc);
                   // Create the CrystalReportViewer object
                          CrystalReportViewer crystalReportPageViewer = new CrystalReportViewer();
         String reportSourceSessionKey = reportName+"ReportSource";
         Object reportSource = session.getAttribute(reportSourceSessionKey);
         if (reportSource == null)
              reportSource = clientDoc.getReportSource();
              session.setAttribute(reportSourceSessionKey, reportSource);
         //     set the reportsource property of the viewer
         crystalReportPageViewer.setReportSource(reportSource);
         crystalReportPageViewer.setHasRefreshButton(true);
         crystalReportPageViewer.setToolPanelViewType(CrToolPanelViewTypeEnum.none);
         // Process the report
         crystalReportPageViewer.processHttpRequest(request, response, application, null);

    the sample shows how to clear RAS and Enterprise resources after viewing report.
    1. If you use unmanaged RAS - as I can see you using setReportAppServer, then remove the enterprise related stuff : instantiating and cleaning code.
    The sample code is meant to give you an idea on how you can release the resources after done with viewing report. In your case all you need to do for cleaning is call close() on ReportDocumentObject. The sample will need to be modified for your requirements.

  • Open and close database connection jsp page

    hi there, i wanna know about how to open database connection to Mysql at the beginning of the page and close the connection at the end of the page. The jsp page contain all processing code.
    plz help me...thx thx

    <html>
    <head>
    <basefont face="Arial">
    </head>
    <body>
    <%@ page language="java" import="java.sql.*" %>
    <%!
    // define variables
    String id;
    String firstName;
    String lastName;
    // define database parameters, change this according to your needs
    String host="localhost";
    String user="root";
    String pass="";
    String db="test";
    String conn;
    %>
    <table border="1" cellspacing="1" cellpadding="5">
    <tr>
    <td><b>id</b></td>
    <td><b>first name</b></td>
    <td><b>last name</b></td>
    </tr>
    <%
    Class.forName("org.gjt.mm.mysql.Driver");
    // create connection string
    conn = "jdbc:mysql://" + host + "/" + db + "?user=" + user 
    + "&password=" + pass;
    // pass database parameters to JDBC driver
    Connection Conn = DriverManager.getConnection(conn);
    // query statement
    Statement SQLStatement = Conn.createStatement();
    // generate query
    // change this query according to your needs
    String Query = "SELECT id, firstname, lastname FROM abook";
    // get result
    ResultSet SQLResult = SQLStatement.executeQuery(Query);
    while(SQLResult.next())
       id = SQLResult.getString("id");
       firstName = SQLResult.getString("firstname");
       lastName = SQLResult.getString("lastname");
            out.println("<tr><td>" + id + "</td><td>" + 
         firstName + "</td><td>" + lastName + "</td></tr>");
    // close connection
    SQLResult.close();
    SQLStatement.close();
    Conn.close();
    %>
    </table>
    </body>
    </html>hi :-)
    i've got that on the net as part of the tutorial on jsp (long long time ago)
    you just have to be resourceful in finding solutions :-)
    try google :-) there are lot's of tutorial available in there ;-)
    goodluck ;-)
    regards,

  • How to access  database connection from datatsource in a standalone java ap

    My java standalone application wants connection to database with lookup to datasource name which is configured in the oc4j app server.
    Please guide me with some ideas to acheieve this.

    user510497,
    Following sample program requires access to classes in "oc4j.jar" file.
    Test environment:
    * Server:
    + OC4J stand-alone 10.1.2.0.2
    + Red Hat Enterprise Linux AS release 3
    + Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
    + Oracle Database 10g Release 10.1.0.4.0 - 64bit Production
    * Client
    + Microsoft Windows XP Professional Version 2002 Service Pack 2
    + Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode, sharing)
    import java.sql.Connection;
    import java.sql.DatabaseMetaData;
    import java.sql.SQLException;
    import java.util.Properties;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    public class DataSrc2 {
      public static void main(String[] args) {
        Connection conn = null;
        Properties l_props = new Properties();
        l_props.put(Context.INITIAL_CONTEXT_FACTORY,
                    "com.evermind.server.rmi.RMIInitialContextFactory");
        l_props.put(Context.PROVIDER_URL, "ormi://your_OC4J_host/");
        l_props.put(Context.SECURITY_PRINCIPAL, "your_OC4J_user");
        l_props.put(Context.SECURITY_CREDENTIALS, "your_OC4J_password");
        Context l_jndiContext = null;
        try {
          l_jndiContext = new InitialContext(l_props);
          Object l_obj = l_jndiContext.lookup("default-data-source");
          DataSource ds = (DataSource) l_obj;
          conn = ds.getConnection("scott","tiger");
          DatabaseMetaData dbmd = conn.getMetaData();
          System.out.println(dbmd.getDatabaseProductVersion());
        catch (NamingException x_naming) {
          x_naming.printStackTrace();
        catch (SQLException xSql) {
          xSql.printStackTrace();
        finally {
          if (l_jndiContext != null) {
            try {
              l_jndiContext.close();
            catch (NamingException x_naming) {
              System.err.println("Failed to close JNDI context.");
              x_naming.printStackTrace();
          if (conn != null) {
            try {
              conn.close();
            catch (SQLException xSql) {
              System.err.println("Failed to close [database] connection.");
              xSql.printStackTrace();
    }NOTES:
    1. Datasource lookup name is value of "default-data-source" attribute of "orion-application" element in file:
    <OC4J_HOME>/j2ee/home/config/application.xmlGood Luck,
    Avi.

  • How to get database connection in applet

    Hi,
    I am trying to prepare database connection in applet. After preparing connection with database it'll read same values from table.
    At the time of development it works fine. I have used esclipse IDE for coding and testing.
    But when I try to call that applet from browser. It is giving ClassNotFound exception.
    Does anybody know How to get database connection in applet ?
    Please help me if anybody know solution for this.
    Thanks,
    Rajesh

    As per my knowledge is conserned
    1 u can get the database connection in a jsp page and u send the result set as param to the applet and u can use retrieved values as if they were of the same applet if u r interested i can send the db connetion coding for jsp my id [email protected]

  • How to correct close database connection after report generation

    Hello
    I have problem a with alive database connection after report creation and report  closing. How to properly to close connection to database?
    Best regards
    Edited by: punkers84 on Jun 17, 2011 10:38 AM

    that's what I am doing... after viewing the report, I call the close method on the window closing event of the container window. but the connection is still open. I had a lot of other issues with my jdbc driver but after downgrading to an older version those issues are resolved.Only this one is still there! Is there any other way to close the connection (like using dbcontroller or etc.)?

  • How I can close Database connection?

    I am using the following to open Database connections in Java class.
    Class.forName("oracle.jdbc.driver.OracleDriver");
    con = DriverManager.getConnection("URL","user","password");
    But I do not know how I can have it closed.
    This cause an SQL error: Maximum open cursors exceeded.

    Thanks so much. Your explanation is so clear.
    Here is the whole code. Thanks for your help.
    package xxx.xx.xxx;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    public class Format_BaseTable {
    Connection con = null;
    Statement stmt = null;
    Statement stmt1 = null;
    ResultSet rs = null;
    ResultSet rs1 = null;
    PreparedStatement ps = null;
    PreparedStatement ps1 = null;
    public Format_BaseTable() {}
    public static String valueOf(String oldStr)
    StringTokenizer st = new StringTokenizer(oldStr.trim(), "-");
    char zero = '0';
    String dem_zero = ".0";
    String newStr = "";
    while(st.hasMoreTokens()) {
    String degree = st.nextToken();
    String minute = st.nextToken();
    String second = st.nextToken();     
    if (minute.length() == 1) {
    minute = zero + minute;
    if (second.length() == 1) {
    second = zero + second;
    if (second.length() == 2) {
    second = second + dem_zero;
    if (second.length() == 3) {
    second = zero + second;
    if (second.length() == 5) {
    double d = Double.parseDouble(second);
    second = String.valueOf(Math.round(d));
    newStr = degree + " " + minute + " " + second;
    return newStr;
    public static double feetToMeter(int ft)
    double mt = ft * 0.305;
    return mt;
    public void doConvert() { 
    try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    con = DriverManager.getConnection("url","user","password");
    stmt = con.createStatement();
    stmt1 = con.createStatement();
    rs = stmt.executeQuery("SELECT cla_seqnum, str_leased, nad27_lat, nad27_lon, nad83_lat, nad83_lon, ge_ft, sh_ft, osh_ft, ov_faa_approv_ft, ant_tip_ft, ant_ctr_line_ft FROM cl_antenna_base WHERE application_user_id = 'SQL LOADER'");
    rs1 = stmt1.executeQuery("SELECT mwa_seqnum, nad27_lat, nad27_lon, nad83_lat, nad83_lon, ge_ft, osh_ft, cl_ft FROM mw_antenna_base WHERE application_user_id = 'SQL LOADER'");
    int cl_seqnum = 0;
    String leased = "";
    String ownership = "";
    String str_code = "";
    String cl_nad27_lat = "";
    String cl_nad27_lon = "";
    String cl_nad83_lat = "";
    String cl_nad83_lon = "";
    int cl_ge_ft = 0;
    int cl_ge_mt = 0;
    int cl_sh_ft = 0;
    int cl_sh_mt = 0;
    int cl_osh_ft = 0;
    int cl_osh_mt = 0;
    int cl_ov_faa_approv_ft = 0;
    int cl_ov_faa_approv_mt = 0;
    int cl_ant_tip_ft = 0;
    int cl_ant_tip_mt = 0;
    int cl_ant_ctr_line_ft = 0;
    int cl_ant_ctr_line_mt = 0;
    int i = 1;
    int mw_seqnum = 0;
    String mw_nad27_lat = "";
    String mw_nad27_lon = "";
    String mw_nad83_lat = "";
    String mw_nad83_lon = "";
    int mw_ge_ft = 0;
    int mw_ge_mt = 0;
    int mw_osh_ft = 0;
    int mw_osh_mt = 0;
    int mw_cl_ft = 0;
    int mw_cl_mt = 0;
    int j = 1;
    while(rs.next())                    // For Cellular/PCS
    System.out.println("\n\nCellular/PCS Record #" + i);
    cl_seqnum = rs.getInt("cla_seqnum");
    System.out.println("cla_seqnum =" + cl_seqnum);
    if (rs.getString("str_leased") != null) {
    leased = rs.getString("str_leased");
    } else {
    leased = "";
         StringTokenizer st = new StringTokenizer(leased, "/");
    while(st.hasMoreTokens()) {
         ownership = st.nextToken();
         str_code = st.nextToken();
    if (rs.getString("nad27_lat") != null) {
    cl_nad27_lat = valueOf(rs.getString("nad27_lat"));
    } else {
    cl_nad27_lat = "";
         System.out.println("cl_nad27_lat = " + cl_nad27_lat);
    if (rs.getString("nad27_lon") != null) {
    cl_nad27_lon = valueOf(rs.getString("nad27_lon"));
    } else {
    cl_nad27_lon = "";
    System.out.println("cl_nad27_lon = " + cl_nad27_lon);
    if (rs.getString("nad83_lat") != null) {
    cl_nad83_lat = valueOf(rs.getString("nad83_lat"));
    } else {
    cl_nad83_lat = "";
    System.out.println("cl_nad83_lat = " + cl_nad83_lat);
    if (rs.getString("nad83_lon") != null) {
    cl_nad83_lon = valueOf(rs.getString("nad83_lon"));
    } else {
    cl_nad83_lon = "";
    System.out.println("cl_nad83_lon = " + cl_nad83_lon);
    cl_ge_mt = (int)feetToMeter(rs.getInt("ge_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&cl_ge_mt = " + cl_ge_mt);
    cl_sh_mt = (int)feetToMeter(rs.getInt("sh_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&cl_sh_mt = " + cl_sh_mt);
    cl_osh_mt = (int)feetToMeter(rs.getInt("osh_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&cl_osh_mt = " + cl_osh_mt);
    cl_ov_faa_approv_mt = (int)feetToMeter(rs.getInt("ov_faa_approv_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&cl_ov_faa_approv_mt = " + cl_ov_faa_approv_mt);
    cl_ant_tip_mt = (int)feetToMeter(rs.getInt("ant_tip_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&cl_ant_tip_mt = " + cl_ant_tip_mt);
    cl_ant_ctr_line_mt = (int)feetToMeter(rs.getInt("ant_ctr_line_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&cl_ant_ctr_line_mt = " + cl_ant_ctr_line_mt);
         // update NAD27 and NAD83 data in CL_ANTENNA table
    ps = con.prepareStatement("UPDATE cl_antenna_base SET str_leased = ?, structure_code = ?, nad27_lat = ?, nad27_lon =?, nad83_lat = ?, nad83_lon = ?, ge_mt = ?, sh_mt = ?, osh_mt = ?, ov_faa_approv_mt = ?, ant_tip_mt = ?, ant_ctr_line_mt = ? WHERE cla_seqnum = " + cl_seqnum);
    ps.setString(1, ownership);
    ps.setString(2, str_code);
    ps.setString(3, cl_nad27_lat);
    ps.setString(4, cl_nad27_lon);
    ps.setString(5, cl_nad83_lat);
    ps.setString(6, cl_nad83_lon);
    ps.setInt(7, cl_ge_mt);
    ps.setInt(8, cl_sh_mt);
    ps.setInt(9, cl_osh_mt);
    ps.setInt(10, cl_ov_faa_approv_mt);
    ps.setInt(11, cl_ant_tip_mt);
    ps.setInt(12, cl_ant_ctr_line_mt);
         ps.executeUpdate();          
         i++;
    } // end of while
    while(rs1.next())                    // For Microwave
    System.out.println("\n\nMicrowave Record #" + j);
    mw_seqnum = rs1.getInt("mwa_seqnum");
    System.out.println("mw_seqnum =" + mw_seqnum);
    if (rs1.getString("nad27_lat") != null) {
    mw_nad27_lat = valueOf(rs1.getString("nad27_lat"));
    } else {
    mw_nad27_lat = "";
    System.out.println("mw_nad27_lat = " + mw_nad27_lat);
    if (rs1.getString("nad27_lon") != null) {
    mw_nad27_lon = valueOf(rs1.getString("nad27_lon"));
    } else {
    mw_nad27_lon = "";
    System.out.println("mw_nad27_lon = " + mw_nad27_lon);
    if (rs1.getString("nad83_lat") != null) {
    mw_nad83_lat = valueOf(rs1.getString("nad83_lat"));
    } else {
    mw_nad83_lat = "";
    System.out.println("mw_nad83_lat = " + mw_nad83_lat);
    if (rs1.getString("nad83_lon") != null) {
    mw_nad83_lon = valueOf(rs1.getString("nad83_lon"));
    } else {
    mw_nad83_lon = "";
    System.out.println("mw_nad83_lon = " + mw_nad83_lon);
    mw_ge_mt = (int)feetToMeter(rs1.getInt("ge_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&mw_ge_mt = " + mw_ge_mt);
    mw_osh_mt = (int)feetToMeter(rs1.getInt("osh_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&mw_osh_mt = " + mw_osh_mt);
    mw_cl_mt = (int)feetToMeter(rs1.getInt("cl_ft"));
    System.out.println("&&&&&&&&&&&&&&&&&&&mw_cl_mt = " + mw_cl_mt);
    // update NAD27 and NAD83 data in MW_ANTENNA table
    ps1 = con.prepareStatement("UPDATE mw_antenna_base SET nad27_lat = ?, nad27_lon =?, nad83_lat = ?, nad83_lon = ?, ge_mt = ?, osh_mt = ?, cl_mt = ? WHERE mwa_seqnum = " + mw_seqnum);
    ps1.setString(1, mw_nad27_lat);
    ps1.setString(2, mw_nad27_lon);
    ps1.setString(3, mw_nad83_lat);
    ps1.setString(4, mw_nad83_lon);
    ps1.setInt(5, mw_ge_mt);
    ps1.setInt(6, mw_osh_mt);
    ps1.setInt(7, mw_cl_mt);
    ps1.executeUpdate();
    j++;
    } // end of while
    } catch(SQLException se) {
         System.out.println("SQL Exc" + se.getMessage());
    se.printStackTrace();
    } catch(Exception e) {
    System.out.println(" Exc" + e.getMessage());
    e.printStackTrace();
    finally
              try
                   rs.close();
                   stmt.close();
                   dbConn.freeConnection("system", conn);
                   conn.close();
              } catch (SQLException e)
    } // end of doConvert
    public static void main(String args[]) {
    Format_BaseTable old_nad = new Format_BaseTable();
    old_nad.doConvert();
    } // end of class

  • How to close timeout  connection in SQLDBC ?

    Hello,
    I use SQLDBC to access MAXDB 7.7.0.7.16 database, i have the following issue :
    When a connection reach timeout, I close the connection, and the release the connexion, and then I create a new connection
    To close connection I call my Disconnect function
                        The call close method return "Not connected", but It seems that the underlying Socket is not closed and the Database user task is not closed.
    So the number of task grow until it reach the maximun.
    Where is my error ?
    How can I be sure to close the database user task ?
    IDBError CMaxDBConnection::Disconnect()
         IDBError hr;
         if (m_pConnection)          
              EDPTRACE_DBG_INF(L"CMaxDBConnection::Disconnect %1", EDPMASK_TRC_CONNECTIONS) << (DWORD)m_pConnection;
              SQLDBC_Retcode rc = m_pConnection->close();
              if (SQLDBC_OK != rc)
                   hr = convertError(rc, m_pConnection->error(), L"CMaxDBConnection::Disconnect");               
              m_pParent->m_pEnvironment->releaseConnection(m_pConnection);
              m_pConnection = NULL;
         return hr;
    Regards
    Yann

    MAXDB 7.7.07.16 (WINDOWS 2008 R2 (64 bits) Client program in 32bits.
    Hello
    I have code a small program to illustrate my issue.
    When I create a connection with SQLDBC it create 2 user tasks in the MAXDB task Manager
    One uer task  APPPLICATION SERVER, SESSION TIMOUT, ... filled.
    T425  10 0x16AC User      2688* Command wait        823 0            76 20691065(s)
    and One User task with no session tiemout.
    T111   8 0x15B8 User       2688 Command wait       3009 0            76 24900501(s)
    T111                  USER             ( pid = 2688       ) -
    dispatcher_cnt: 2                                     command_cnt   : 2
    exclusive_cnt : 30                                    self_susp_cnt : 0
    state_vwait   : 0          state_vsleep  : 0          state_vsusp   : 0
    same_ukt_coll : 0        
    when I close the connection the task T111 is never remove !!
    Do you have any idea ?
    I try to delete environment but It does not work.
    Regards
    Yann.
    Here is the code  :
    // SQLDBC.cpp : Defines the entry point for the console application.
    #include "stdafx.h"
    #include "SQLDBC.h"
    using namespace SQLDBC;
    static void parseArgs(int argc, wchar_t **argv);
    static SQLDBC_Connection *connectDB();
    SQLDBC_Environment *g_env;
    typedef struct ConnectArgsT {
      bstrt username;
      bstrt password;
      bstrt dbname;  
      bstrt host;    
      bstrt request;    
    } ConnectArgsT;
    ConnectArgsT connectArgs;
    void exitOnError(SQLDBC_ErrorHndl &err);
    int _tmain(int argc, _TCHAR* argv[])
         SQLDBC_Retcode ret;
       parseArgs(argc, argv);
       for (int j = 0 ; j < 10 ; ++j)
            for (int i = 0 ; i < 100 ; ++ i)
                 SQLDBC_Connection *conn = connectDB();
                 ret = conn->close();
                 ret = conn->disconnect();
                 g_env->releaseConnection(conn);
            delete g_env;
            g_env = NULL;
       return 0;
    SQLDBC_Connection *connectDB()
      char errorText[200];
      SQLDBC_Retcode rc;
      if (g_env == NULL)
    Every application has to initialize the SQLDBC library by getting a
    reference to the ClientRuntime and calling the SQLDBC_Environment constructor.
           SQLDBC_IRuntime *runtime;      
           runtime = SQLDBC::GetClientRuntime(errorText, sizeof(errorText));
           if (!runtime) {
              fprintf(stderr, "Getting instance of the ClientRuntime failed %s\n", errorText);          
           g_env = new SQLDBC_Environment(runtime);      
    Create a new connection object and open a session to the database.
      SQLDBC_Connection *conn = g_env->createConnection();
      printf("Connecting to '%s' on '%s' as user '%s'\n",
             (char)connectArgs.dbname, (char)connectArgs.host, (char*)connectArgs.username);
      rc = conn->connect(connectArgs.host, connectArgs.dbname,
                         connectArgs.username, connectArgs.password);
      if(SQLDBC_OK != rc) {
        fprintf(stderr, "Can't connect to '%s'.\nERROR: %d:'%s'\n",
                connectArgs.dbname, conn->error().getErrorCode(), conn->error().getErrorText());
        exit(1);
         conn->setAutoCommit(SQLDBC_TRUE);
      return conn;
    static void parseArgs (int argc, wchar_t **argv)
      connectArgs.username = "ESKDBADM";
      connectArgs.password = "DELORME";
      connectArgs.dbname = "EDP350";
      connectArgs.host = "ly-delorme"; 
    void exitOnError(SQLDBC_ErrorHndl &err)
      if(err) {
        fprintf(stderr, "Execution stopped %d:'%s'", err.getErrorCode(), err.getErrorText());
        //exit(1);
    Yann.

  • How to manage database connections

    Hi, I have been trying to find the best way of doing database connections, My application will not be used by many users since its an intranet application used by administrators only to change settings.
    I want to be able to connect to db from a servlet but not have to make the connection all the time, I was thinking of creating my own ContinuousConnection class which basically keeps the connection and all you do is getConnection which checks if the connection is "up" or not, if it is up then just give it as the return value else, just create a new connection since the driver class has already been loaded...if it is null then just load the driver and make the connection.
    this way in differenet functions that i have in the servlet dont have to make connections all the time.
    Is there a better way of doing this?
    I was thinking of putting the connection object in the data section of the servlet, but then it is more or less like static data amongst all threads created to run the servlet and I dont know what would happen if 2 querries are run from the same connection by different serving threads...can someone please explain me this..
    I know a good way of managing connections is using a pool..but i dont know how useful is that here...also i am not very familiar with a pool..can someone please explain me the idea behind it..and how it works...that would be just perfect.
    Thank you very much.
    Ankur

    IIRC to setup tomcat connection pooling when using an Oracle database (for example):
    Add something like this to the server.xml file:
            <Context path="/myProject" docBase="myProject" debug="0"
                     reloadable="true" crossContext="true">                
                    <Resource name="jdbc/ORAC" auth="Container" type="javax.sql.DataSource"/>
              <ResourceParams name="jdbc/ORAC">
                <parameter>
                  <name>factory</name>
                  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                </parameter>
                <parameter>
                  <name>driverClassName</name>
                  <value>oracle.jdbc.driver.OracleDriver</value>
                  </parameter>
                <parameter>
                  <name>url</name>
                  <value>jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:XXXX</value>
                </parameter>
                <parameter>
                  <name>username</name>
                  <value>xxxxx</value>
                </parameter>
                <parameter>
                  <name>password</name>
                  <value>xxxxx</value>
                </parameter>
                <parameter>
                  <name>removeAbandoned</name>
                  <value>true</value>
                </parameter>
                <parameter>
                  <name>logAbandoned</name>
                  <value>true</value>
                </parameter>
                <parameter>
                  <name>maxActive</name>
                  <value>20</value>
                </parameter>
                <parameter>
                  <name>maxIdle</name>
                  <value>10</value>
                </parameter>
                <parameter>
                  <name>maxWait</name>
                  <value>-1</value>
                </parameter>
              </ResourceParams>                       
            </Context>  This needs to go in between the <Host> ... </Host> tags (probably at the bottom) in the server.xml file (${CATALINA_HOME}/conf). You must put this in the correct place in the xml file or you'll get errors.
    Then you need to add this to your web.xml file:
        <resource-ref>
             <description>Oracle Datasource</description>
             <res-ref-name>jdbc/ORAC</res-ref-name>
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
        </resource-ref>Again this needs to go in the correct place (as per the dtd)
    Then to get a connection:
    final Context initContext = new InitialContext();               
    final DataSource ds = (DataSource) initContext.lookup("java:/comp/env/jdbc/ORAC");                              
    final Connection conn = ds.getConnection();You probably want to wrap getting these connections in a class (i.e. with a getConnection method). And remember to close the connections when you've finished with them.

  • How to create database connection and how to call it using Java

    Hi,
    Good day! I'd like to know how I can create a db connection in JDev, then use this connection to retrieve data using a Java Class? I've seen using New Gallery > Database Connection. But I'm not sure how I can access this connection using Java and display some output from the retrieved records.
    Any steps/tutorial link is appreciated.
    Thanks in advance,
    Rian

    Hi,
    If you need to access the connection in the entity object then refer http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/bcadvgen.htm#BABEIFAI i.e in MODEL.
    But if you want to access connection in ViewController part of application then you need to do it manually.For this i am giving you my code for reference.------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.faces.context.FacesContext;
    import oracle.jdbc.pool.OracleDataSource;
    public class DataHandler {
    String jdbcUrl = null;
    String userid = null;
    String password = null;
    Connection conn;
    public static final String CONNECTION_STRING =
    FacesContext.getCurrentInstance().getExternalContext().getInitParameter("connectionString");
    public static final String USER_NAME =
    FacesContext.getCurrentInstance().getExternalContext().getInitParameter("userName");
    public static final String PASSWORD =
    FacesContext.getCurrentInstance().getExternalContext().getInitParameter("password");
    public DataHandler(String jdbcUrl, String userid, String password,
    boolean shouldConnect) throws SQLException {
    this.jdbcUrl = jdbcUrl;
    this.userid = userid;
    this.password = password;
    if (shouldConnect) {
    connect();
    public void connect() throws SQLException {
    OracleDataSource ds;
    ds = new OracleDataSource();
    ds.setURL(jdbcUrl);
    conn = ds.getConnection(userid, password);
    public Connection getConnection() {
    return conn;
    public ResultSet executeQuery(String sql) throws SQLException {
    Statement s = conn.createStatement();
    return s.executeQuery(sql);
    public void closeConnection() throws SQLException {
    if (!conn.isClosed()) {
    conn.close();
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • Close database connections

    I developed a small application which talks to Oracle database to do sevreral transactions. I am using a connection pool class in my main program. I used to several methods in my class to do database transactions. When ever I close connection at the end of my each method in finally block it says connection closed when I run my program for the second time. First time it doesn't say anything and runs well. So I removed finally block in each method then it works fine.
    Question: I was wondering how my program works without closing connections in each method. Does ConnectionPool will take care of connections even if I don't close connection?
    Please let me know.
    Thanks.

    Thank You. My connection pool has destroy() method
    which will close the connection. I think when my main
    class is out of scope the connection pool is taking
    care of closing the connection. If you are not calling a method then the only way that can happen is via the garbage collector.
    And relying on the garbage collector in java to clean up resources is a really, really bad idea.

  • When to open and close database connection

    im trying to connect to a oracle database using servlets
    when should i open and close the connection
    it works fine when i do both in the doPost() method
    but when i tried to open connection in init() methd .. it doesnt seem to work
    what should i do...
    the connection is initialised in the init() method but is null in the doPost() method

    " im trying to connect to a oracle database using servlets
    when should i open and close the connection
    it works fine when i do both in the doPost() method
    but when i tried to open connection in init() methd .. it doesnt seem to work
    what should i do...
    the connection is initialised in the init() method but is null in the doPost() method"
    1:
    without seeing the code i would say the the connection is null
    because you are storing it as a servlet class variable which is
    not thread safe.
    2:
    The best way to do it using connection pooling
    detailed docs on the tomcat website
    3:
    if you are not using connection pooling, then
    open and close the connection in the do* method
    or
    use init() to place the connection in the servletconfig
    and close in destroy() and use synching to access

  • How to get database connection in common java class

    hi friendz,
    plz help me...
    I am using JDEV 11.1.2.2.0 version.
    my problem is I'm writing common java class which can reuse any application.
    in this case when im create database connection like this,
    String username = "a";
    String password = "b";
    String thinConn = "jdbc:oracle:thin:@IP:1521:database";
    DriverManager.registerDriver(new OracleDriver());
    Connection conn =
    DriverManager.getConnection(thinConn, username, password);
    conn.setAutoCommit(false);
    return conn;
    but this statement not working in java class.its working only backing bean.
    import oracle.jdbc.OracleDriver;
    DriverManager.registerDriver(new OracleDriver());
    how can i do that??
    hope your help
    -Harsh-

    What is the error message in Java class?
    With JDBC 4.0 driver the DriverManager class has added support for the Java SE Service Provider mechanism to the getConnection() and getDrivers() methods using which JDBC drivers may be loaded automatically. The following Class.forName() method is not required to be invoked.
    Class.forName(“oracle.jdbc.OracleDriver”);
    Only the following is required to obtain a connection.
    String url="jdbc:oracle:thin:@localhost:1521:ORCL";
    Connection connection = DriverManager.getConnection(url,"oe", "pw");

  • Opening multiple reports in Crystal Reports for VS causes database connect limit to be reached.  Seems to be no way to force Crystal Reports to close database connection (other than exiting application)

    I am working on upgrading an application that has been in use for many years.  The application is written in VB6 and I have been tasked with upgrading the current application to Crystal Reports for Visual Studio.  I am using Crystal Reports for VS Version 13.0.12.1494.  The system's database is a Sybase SQL Anywhere 16 database with an ODBC connection using integrated login.  Each of the reports has the database connection set up from within the report.  There is only once database server, so each of the reports are pointing to the same DB.  The database server is currently installed as a "Personal Server" with a limit of 10 connections. 
    I have implemented the CR viewer as part of a COM-callable wrapper that exposes a COM interface for VB6 to interact with.  Inside of my viewer component is a Winform that embeds the Crystal's Report viewer.  The COM interface basically maps the basic Crystal apis to methods that the VB6 can call (i.e., Load Report, Set Field Text, Update SQL Query, etc).  This architecture is working as designed and the reports are displaying correctly and responding correctly to changes in queries, etc.
    The issue is that after I open 9 reports, the tenth one will respond with an error indicating that the database connection limit has been reached.  The database connections used by the reports aren't released until after the application is closed.  The application is designed for a secure environment that prohibits the non-administrative user from accessing the systems desktop, so asking the user tor restart the application after 10 reports isn't a viable option.
    I have checked and database connection pooling is turned off for the SQL Anywhere 16 driver.
    I have been digging on this for a few days and have tried adding code in the FormClosed event to close and dispose of the Report Document as follows:
    ReportDocument reportDoc= (ReportDocument) crystalReportViewer1.ReportSource;
    reportDoc.Close();
    reportDoc.Dispose();
    GC.Collect();       // Force garbage collection on disposed items
    I have also tried the following (as well as maybe 20 or so other permutations) trying to fix the issue with no success.  
    ReportDocument reportDoc= (ReportDocument) crystalReportViewer1.ReportSource;
    foreach (Table table in reportDoc.Database.Tables)
         table.Dispose();
    crystalReportViewer1.ReportSource = null;
    reportDoc.Database.Dispose();
    reportDoc.Close();
    reportDoc.Dispose();
    reportDoc = (ReportDocument)crystalReportViewer1.ReportSource;
    GC.Collect();       // Force garabe collection on disposed items
    Any ideas or suggestions would be greatly appreciated.  I have been pulling my hair out on this one!

    Hi Ludek,
    Thanks so much for the quick reply.  Unfortunately I did not have time to work on the reporting project Friday afternoon, but did a quick test this morning with some interesting results.  I'm hoping if I describe what I'm doing, you can show me the error of my ways.  This is really my first major undertaking with Crystal Reports.
    If I simply load the report, then close and dispose, I don't hit the limit of 10 files.  Note that I do not logon manually in my code as the logon parameters are all defined within the reports themselves.  The logon happens when you actually view the report.  Loading the report doesn't seem to actually log in to the DB.
    What I did was create a very simple form with a single button that creates the WinForm class which contains the Crystal Viewer.  It then loads the report, sets the ReportSource property on the CrystalReportsViewer object contained in the WInForm and shows the report. The report does show correctly, until the 10 reports limit is reached.
    The relevant code is shown below. More than I wanted to post, but i want to be as complete and unambiguous as possible. 
    This code displays the same behavior as my earlier post (after 10 reports we are unable to create another connection to the DB).
    // Initial Form that simply has a button
      public partial class SlectReport : form
            public SelectReport()
                InitializeComponent();
            private void button1_Click(object sender, EventArgs e)
                ReportDocument rd = new ReportDocument();
                ReportForm report = new ReportForm();
                try
                    rd.Load(@"Test.rpt");
                    report.ReportSource = rd;
                    report.Show();
             catch (Exception ex)
                  MessageBox.Show(ex.Message);
    // The WinForm containing the Crystal Reports Viewer
        public partial class ReportForm : Form
            public ReportForm()
                InitializeComponent();
            private void Form1_Load(object sender, EventArgs e)
                this.crystalReportViewer1.RefreshReport();
                this.FormClosed += new FormClosedEventHandler(ReportForm_FormClosed);
            void ReportForm_FormClosed(object sender, FormClosedEventArgs e)
                ReportDocument rd;
                rd = (ReportDocument)crystalReportViewer1.ReportSource;
                rd.Close();
                rd.Dispose();
            public object ReportSource
                set { crystalReportViewer1.ReportSource = value; }
    Again, any guidance would be greatly appreciated. 

Maybe you are looking for

  • Duplication of Photos between iPhoto & Aperture / Memory Issues

    Is there a way for iPhoto & Aperture to share the same photos, so that there is not a duplication of photos and too greatly reduce memory space for those of us with large libraries????

  • Normalizing the volume of MP3 files

    My iPod plays music at various volume levels, apparently you can normalize the files for them to play at the same volume (I am not good with computers!). However I have found in Itunes the sound check function which adjusts song playback to the same

  • E-Business Suite Avery Labels Discrepancy

    I followed the directions under Tim's blog: http://blogs.oracle.com/xmlpublisher/entry/avery_labels When I use the add-in through Microsoft Word and choose Preview as PDF - the labels look perfect - it prints 3 columns and 10 rows before doing a page

  • I am getting an error when opening the organizer saying online services could not be initialized?

    I just installed photoshop elements 11 on my Mac and am receiving an error when opening the organizer.  It is stating that online services could not be initialized and that I need to reinstall.  I tried that and it is still coming up.  What do I do?

  • How to code/compile/package MDB without Sun IDE?

    Hi I am using Eclipse 3.01 so not able to levelage the native support from Sun's IDE. Can anyone please point me to some useful materials? I want to know: 1. How to compile? What are the jars required and where to find them. 2. How to package and dep