----------------------------------------------------------------
BEFORE YOU POST, search the faq at <http://java.apache.org/faq/>
WHEN YOU POST, include all relevant version numbers, log files,
and configuration files.  Don't make us guess your problem!!!
----------------------------------------------------------------

Gustavo

More to the point, the JDBC-ODBC bridge is noted as being for experimental
rather than production use.  The best advice is to get hold of a native
JDBC driver for the database youare connecting to to and staying well
clear of the bridge. I won't go so far as to say it JDBC-ODBC bridge is
deprecated since I can't recall specifically reading that.

I used to us the bridge with Pervasive SQL on JDK 1.2.1 before they came
out with a native JDBC driver, and to put it mildly it was terribly
unsable.

Chris


On Tue, 17 Oct 2000 08:06:09 +0200, Bruno Wenger wrote:

>----------------------------------------------------------------
>BEFORE YOU POST, search the faq at <http://java.apache.org/faq/>
>WHEN YOU POST, include all relevant version numbers, log files,
>and configuration files.  Don't make us guess your problem!!!
>----------------------------------------------------------------
>
>Gustavo,
>
>I was on JDK 1.2.2. I installed JDK 1.3 and the problems had gone.
>There seems to be a problem with Sun's JDBCODBC. If 1.3 is no
>option you could try a different driver
>
>check out http://www.inetsoftware.de (this is from Brett Knights)
>He says: I've been using their drivers for over a year with great results.
>
>
>
>> -----Urspr�ngliche Nachricht-----
>> Von: [EMAIL PROTECTED]
>> [mailto:[EMAIL PROTECTED]]Im Auftrag von Gustavo
>> Arruda
>> Gesendet: Dienstag, 17. Oktober 2000 00:27
>> An: Java Apache Users
>> Betreff: Memory consumption due to erroneous access to database
>>
>>
>> ----------------------------------------------------------------
>> BEFORE YOU POST, search the faq at <http://java.apache.org/faq/>
>> WHEN YOU POST, include all relevant version numbers, log files,
>> and configuration files.  Don't make us guess your problem!!!
>> ----------------------------------------------------------------
>>
>> Hi folks,
>>
>> I am using Windows NT 4.0 plus JDK1.2.1 plus Apache 1.3.12 plus JSERV1.0.
>>
>> I have written a class to read the DataBase through a JDBC/ODBC
>> bridge, but
>> I am afraid it is not throwing objects to garbage or closing connections.
>> Everytime I call any Servlet that uses this class, it works fine but the
>> amount of memory used by "java.exe" process increases by 200k or more. So,
>> after some repeated calls to any Servlet, java.exe is so big that it stops
>> working and I cant run Servlets anymore. The error in the log file says
>> "Jdbc:Odbc : can t read anymore tables".
>>
>> I am sending  you the code of the class 1 that access the DB , the code of
>> class 2 that extends the HttpServlet class, and the code of class 3 that
>> extends class2. The problem is I dont know how to close the connection to
>> the database after the ResultSet is passed to the CLASS3 (see
>> codes, I hope
>> you do!)
>>
>> Thanks in advance,
>>
>> Gustavo Arruda
>>
>> //CLASS 1 - DBSynchronizer - Access the DB through methods select
>> and update
>> import java.io.*;
>> import java.sql.*;
>> public class DBSynchronizer {
>>
>>   private static final String url="jdbc:odbc:carona";
>>   private static boolean isReading = false;
>>   private static boolean isWriting = false;
>>   private static Connection readCon;
>>   private static Connection writeCon;
>>   private static Statement select = null;
>>   private static Statement update = null;
>>   private static ResultSet result = null;
>>   public DBSynchronizer() {
>>      try {
>>         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
>>         readCon = DriverManager.getConnection(url,"","");
>>         writeCon = DriverManager.getConnection(url,"","");
>>      } catch (Exception e) {}
>>   }
>>
>>   public synchronized ResultSet select(String query) {
>>      while (isWriting) try {
>>         wait();
>>      } catch (InterruptedException e) { }
>>      isReading = true;
>>      try {
>>         select = readCon.createStatement();
>>         result = select.executeQuery(query}
>>     catch(Exception e) {
>>         e.printStackTrace();
>>     }
>>      isReading = false;
>>      notifyAll();
>>      return result;
>>   }
>>
>>   public synchronized int update(String updt) {
>>     int inserted=0;
>>     while (isReading) try {
>>        wait();
>>     } catch (InterruptedException e) { }
>>     isWriting = true;
>>     try {
>>        update = writeCon.createStatement();
>>        inserted=update.executeUpdate(updt);
>>      } catch(Exception e) {
>>        inserted=-1;
>>      }
>>      isWriting = false;
>>      notifyAll();
>>      return inserted;
>>   }
>> }
>>
>> //CLASS2 - HttpServletSQL makes the CLASS1 methods available through an
>> object called sql
>> import java.io.*;
>> import java.sql.*;
>> import java.util.*;
>> import javax.servlet.*;
>> import javax.servlet.http.*;
>>
>> public class HttpServletSQL extends HttpServlet {
>>
>>    protected static DBSynchronizer sql;
>>
>>    public void init (ServletConfig config) throws ServletException  {
>>       super.init(config);
>>       // Created only by the first Servlet
>>       if(sql == null)
>>
>>          sql = new DBSynchronizer();
>>       }
>>    }
>> }
>> //CLASS3 - A normal servlet that extends class2
>> import java.io.*;
>> import javax.servlet.*;
>> import javax.servlet.http.*;
>> import java.sql.*;
>> import java.util.*;
>>
>> public class Servlet_counter extends HttpServletSQL {
>>  public void doGet (HttpServletRequest req, HttpServletResponse res)
>>    throws ServletException, IOException
>>   {
>>       res.setContentType("text/html");
>>       ServletOutputStream out = res.getOutputStream();
>>
>>      String fontSize = req.getParameter("fontSize");
>>      String fontColor = req.getParameter("fontColor");
>>      if (fontSize == null) fontSize = "2" ;
>>      if (fontColor == null) fontColor = "white" ;
>>      String getCod = "Select Max(Cod) AS MCOD FROM ACCESS" ;
>>
>>      ResultSet rs= sql.select(getCod);
>>      int cod = 0;
>>      try {
>>        if (rs.next()) {
>>          cod = rs.getInt(1);
>>          out.print("<font size=+"+fontSize+" color="+fontColor+"> "+
>>                     (cod+1)+"</font>");
>>        }
>>       rs.close();
>>      }
>>      catch(Exception e) { }
>> }
>> }
>>
>>
>>
>> --
>> --------------------------------------------------------------
>> Please read the FAQ! <http://java.apache.org/faq/>
>> To subscribe:        [EMAIL PROTECTED]
>> To unsubscribe:      [EMAIL PROTECTED]
>> Search Archives:
>> <http://www.mail-archive.com/java-apache-users%40list.working-dogs.com/>
>> Problems?:           [EMAIL PROTECTED]
>>
>
>
>
>--
>--------------------------------------------------------------
>Please read the FAQ! <http://java.apache.org/faq/>
>To subscribe:        [EMAIL PROTECTED]
>To unsubscribe:      [EMAIL PROTECTED]
>Search Archives:
><http://www.mail-archive.com/java-apache-users%40list.working-dogs.com/>
>Problems?:           [EMAIL PROTECTED]
>




--
--------------------------------------------------------------
Please read the FAQ! <http://java.apache.org/faq/>
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Search Archives:
<http://www.mail-archive.com/java-apache-users%40list.working-dogs.com/>
Problems?:           [EMAIL PROTECTED]

Reply via email to