Servlet and Database access

This is my first database program using servlet. Also I use ECS to create the HTML document.
I accept data from a HTML page and display on the screen as well as writing to a TABLE (in instantDB)
Do I have to have the database connection in INIT() method ?
-------------Here's the code ---------------------------------------------------
public class work2_db extends HttpServlet {
public void doPost(HttpServletRequest request,
          HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String dbName = "db";
     String tableName = "survey";
     Connection conn = null;
     Statement stmt = null;
     System.out.print("\nLoading JDBC driver...\n\n");
     try {
     // InstantDB JDBC driver
     Class.forName("com.lutris.instantdb.jdbc.idbDriver");
     // MS Access, use default JDBC-ODBC driver
     // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     } catch(ClassNotFoundException e) {
     e.printStackTrace();
     System.exit(1);
     try {
     System.out.print("Connecting to " + dbName + " database...\n\n");
     // InstantDB
     String url = "jdbc:idb:" + dbName;
     // InstantDB, specify the configuration file name in URL
     conn = DriverManager.getConnection(url + ".prp");
     // MS Access
     //conn = DriverManager.getConnection(url);
     System.out.println("Connected to and created database " + dbName);
     System.out.print("Accessing new " + tableName + " table...\n\n");
     stmt = conn.createStatement();
     } catch (SQLException se) {
     se.printStackTrace();
     System.exit(1);
int id=0;
//Go to the last record of the result set to get the next Survey ID
String queryString = "SELECT * FROM " + tableName ;
     ResultSet rset = stmt.executeQuery(queryString);
     while (rset.next()) {
     id = rset.getInt("surveyid");
     id++; // This is the Survey ID for this new survey.
rset.close();
int service[] = {0,0,0,0,0,0};
int level[] = {0,0,0,0,0};
Body body = new Body();
Html html = new Html()
.addElement(new Head()
     .addElement(new Title("Survey Conformation")))
.addElement(body);
body.addElement(new H1("Thank you! Your Survey is accepted."));
body.addElement(request.getParameter("salutation") + " " +
          request.getParameter("firstname") + " " +
          request.getParameter("lastname"))
.addElement(new BR());
body.addElement(request.getParameter("company"))
.addElement(new BR());
body.addElement(request.getParameter("street"))
.addElement(new BR());
body.addElement(request.getParameter("city") + " " +
          request.getParameter("state") + " " +
          request.getParameter("postal"))
.addElement(new BR());
body.addElement(request.getParameter("country"))
.addElement(new BR());
body.addElement("Email: " + request.getParameter("email"))
.addElement(new BR())
.addElement(new BR());
body.addElement("You Travelled with us to : " +
          request.getParameter("destination"))
.addElement(new BR());
body.addElement("You used our following Services : ");
body.addElement(new BR());
String values[] = request.getParameterValues("service");
if (values != null) {
UL list = new UL();
for (int i = 0; i < values.length; i++) {
     list.addElement(new LI(values));
     // setup category 1 feedback
     if (values[i] != null)
     service[i] = 1;
body.addElement(list);
body.addElement(new BR());
body.addElement("Your satisfaction level : ");
     body.addElement(request.getParameter("level") + " " +
               request.getParameter("good") + " " +
               request.getParameter("better") + " " +
               request.getParameter("best") + " " +
               request.getParameter("very poor quality") + " " +
               request.getParameter("none"))
.addElement(new BR());
body.addElement("You said we Can improve our Service as follows: " +
          request.getParameter("comments"));
out.println(html.toString());
//set up category level feed back
     if (request.getParameter("good") != null)
     level[1] = 1;
     else if (request.getParameter("better") != null)
     level[2] = 1;
     else if (request.getParameter("best") != null)
     level[3] = 1;
     else if (request.getParameter("very poor quality") != null)
     level[4] = 1;
     else if (request.getParameter("none") != null)
level[5] = 1;
//Now write the collected data into the database
String insertString = "INSERT intO" + tableName+
id + "," + service[1] + "," + service[2] + "," + service[3] + "," +
+ service[4] + "," + service[5] + "," + service[6] + "," +
+ level[1] + "," + level[2] + "," + level[3] + "," +
+ level[4] + "," + level[5] ;
stmt.close();
conn.close();
-------------------------Compile Errors ---------------------------------------------------------------------------------
I am getting following error for the exception handling. Can someone help me !!! PLEASE

Hi JDKPSSH,
Do I have to have the database connection in INIT() method ?not mandatory to have it in init() ( not INIT() ) method.
I am getting following error for the exception handling. Can someone help me !!! PLEASE Check out by putting the following statements in try block
stmt.close();
conn.close();otherwise you get a compile time error.
unreported exception java.sql.SQLException; must be caught or declared to be thrown
Thanks,
Sanath Kumar.

Similar Messages

  • Servlet with Database Access!!!

    Hi !!!!
    I have deployed HelloServlet with Oracle Application Server 4.0.8.1.
    Now I want to connect from Servlet to Oracle8i 8.1.5.
    But, when I try to deploy a Servlet with Database Access, I receive the next:
    "Get operation not allowed"
    The URL used is:
    http://host.domain:port/virtual_path/class_name
    The servlet was compiled using the Sun's jdk from command line. There wasn't compilation errors.
    I run a simple application with database access from command line without problems.
    The drivers and JDBC libraries are operating for this simple application.
    Any help will be appreciated.
    Many thanks
    Sergio

    If you are running OAS 4.0.8.1 and Oracle 8.1.5 on the same machine then this could be the problem. These products are not certified to run on the same machine as they give a path conflict.
    Hope this helps.

  • PJC and database access through JDBC

    Hello,
    I'm trying to access to the database through a PJC via JDBC.
    conn = DriverManager.getConnection ("jdbc:oracle:thin:@machine:1521:XE", "user", "pwd");It works fine on a XE database, but fails on another XE one:
    Oracle JInitiator: Version 1.3.1.22
    java.lang.NullPointerException
         at oracle.jdbc.ttc7.O3log.marshal(O3log.java:606)
         at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:255)
         at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:377)
         at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:515)
         at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:345)
         at java.sql.DriverManager.getConnection(Unknown Source)
         at java.sql.DriverManager.getConnection(Unknown Source)
         at oracle.forms.fd.AsyncJob.connect(AsyncJob.java:68)
         at oracle.forms.fd.AsyncJob.run(AsyncJob.java:121)
         at java.lang.Thread.run(Unknown Source)It also fails on a remote Unix database:
    java.security.AccessControlException: access denied (java.net.SocketPermission monadev resolve)
         at java.security.AccessControlContext.checkPermission(Unknown Source)
    ...so I edit the java.policy file of the Jinitiator directory:
    permission java.net.SocketPermission "machine:port-", "accept,connect,listen,resolve";     and then get the same execption:
    java.lang.NullPointerException
         at oracle.jdbc.ttc7.O3log.marshal(O3log.java:606)
         at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:255)
    ...Finally, it work on only one machine and only a local database.
    I'm probably missing something somewhere.
    Is anyone could give me some light on this ?
    Thanks in advance,
    Francois

    I'm just learning to work with PJC's, so I'm unsure whether I can help, but here goes. I found the following archived on Google Groups (http://groups.google.com):
    Hi. The basic applet security model is that it can only make connections
    back to the machine from which it was downloaded. If you want to do
    JDBC from an applet to a DBMS not on the applet-server machine,
    you need a type-3 JDBC driver. A type-3 JDBC driver has an all-Java
    client driver piece which an applet can download and use. This driver
    piece connects to a proxy piece which is running on the webserver
    machine. This proxy piece then connects to any DBMS anywhere on the
    net, and is the middleman between the JDBC client and DBMS.
       For security, management and performance reasons it's usually better to
    constrain JDBC to a middle tier such as in a servlet, and use HTML to and
    from the client, rather than the space and time involved in downloading a
    full general query engine (a JDBC driver) to a client which typically uses
    .1% of the capability or classes of the JDBC driver.
    Joe Weinstein at BEA HTH,
    Eric Adamson
    Lansing, Michigan

  • Servlet and Database Connectivity

    Hi,
    I have got a basic question. I am connecting to a database through a servlet and displaying a table. What I need to do is have three buttons at the bottom of the table like "ADD", "DELETE" "MODIFY". I am wondering how I can add buttons to the HTML page through the servlet, select a row and click on one of the buttons to MODIFY/DELETE and how to capture the actions of each button when clicked like when "ADD" button is clicked it should pass control to a servlet "add.java". If i plan to include a javascript how can i call from the servlet, is there a way. If anyone could throw me some light or atleast point me in the right direction that would be great.
    Thanks
    Chak

    you can even use buttons!
    HTML:
    <input type="submit" name="add" value="Add">
    <input type="submit" name="modify" value="Modify">
    <input type="submit" name="delete" value="Delete">
    Servlet:
    String addButton = req.getParameter("add");
    String modifyButton = req.getParameter("modify");
    String deleteButton = req.getParameter("delete");
    So when the add-Button is clicked, addButton equals to "add", modifyButton==null and deleteButton==null, and vice versa

  • Servlet and Database.

    Hello everyone.
    I am planning to build a client server application. Client is a J2ME application which sends some data using HTTP POST to a servlet to acess Mysql database. I need to create a Server application in Java which should notify the user on the server that a data has been received and that the database has been updated. How do i do it? please help. Thanks in advance

    I have done the client application,.I can use the j2me application to send data to mysql database through servlet. I need to create the server application now which can also send data to the database using servlet. I use httpconnection class in j2me. But it is not working in ma servlet application. Does any one know how to creat e a server application which can access a servlet in orde to save data onto a database. Reply.

  • JMS and Database access

    hi all,
    i have problem i have an application which use two database tables, our one external application store records in table A, my application continuous poll table for new entries as it get from it it do manipulation on it and store them in table B.
    Someone suggest me that continuous DB table polling is not good approach rather then use JMS.
    i am total novice in it do some one suggest me that is it good approach to use JMS?
    if so please tell me some guide lines for programme.
    Thanks & regards

    By the sounds of it we implemented a similar solution. Clustered application read X number of records from the database using pesimistic locking (select for update in oracle), put them on a local queue and updated the status flag to prevent them being re-read.
    Using pesimistic locking meant that only one node in the cluster could access the database at once, which is far from ideal for performance, but does at least ensure the messages were processed only once. Another component of the clustered application read messages from the queue and performed the CPU intensive bits. It was a complete lottery whether the messages were evenly distributed between the nodes, but the law of averages suggests that they will be.
    If your database records have a predicatble sequence you could do something like...
    1. Select next 10 keys from an identical sequence
    2. Poll for records with only those keys
    3. When you've run out keys get the next 10.
    Providing you have lots of records being inserted that should allow you to have multiple clients processing them without duplicates, but you would obviously have to give the full solution some serious thought e.g. What do you do if one of the clients dies effectively orphaning up to 10 messages etc.

  • Servlets and database connectivity

    I have connected my html webpage to a database in mysql. The servlet takes the answer of the radio button and compare it with the answer stored in the database.
    Is it possible to have two queries in one servlet?? Because when the servlet is run on the webpage it opens another html tellin the user if the answer was correct/incorrect. On that same page I want it to display the next question and set of radio buttons.
    Help!

    I have connected my html webpage to a database in
    mysql. The servlet takes the answer of the radio
    button and compare it with the answer stored in the
    database.
    Is it possible to have two queries in one servlet??
    Because when the servlet is run on the webpage it
    opens another html tellin the user if the answer was
    correct/incorrect. On that same page I want it to
    display the next question and set of radio buttons.
    Help!You may need to declare couple different Statement's or preparedStatements's depending wich one you use or you can just use the same ResultSet twice.
    Can't help you anymore without seeing your code

  • Please help with servlet and database!!

    Hello,
    i first created a servlet that generated an html page and printed out the parameters of a user's username when they logged in. example, "Welcome user" and it worked fine...
    i inserted a database into my site that validates the username and password, and ever since i did that in dreamweaver, when a user logs in sucessfully, it returns the servlet page like its supposed to, only that it says "Welcome null" instead of "Welcome John." pretty strange, huh!? can anyone please help? thanks!

    Check whether the username textfield name has changed or not. Also print the code over here so that we can check the code.

  • 10.1.3.2 and Database access

    In version 5.x, you could bring data into MS Word directly from the database. Is this still an option in 10.1.3.? If not, what is the recommended approach. Do I login into the web tool, build the report and then export the xml?
    Thanks.

    Hi
    A decision was taken to remove that functionality, a new desktop tool to build reports is not far off ... I know, I know but what about now !
    with 10.1.3.2 you can build the extract portion of the report in your browser, then using the BI Publisher > Login on the new Word plugin you can log in to the server, find your report, create a new template, test it and then upload it back to the server from word avoiding the web interface entirely.
    This should be in the help for th new builder?
    Tim

  • Jsf and database access running in tomcat5

    hi all
    I have my JSF application saved on the "webapps/buydirect" directory in the tomcat container.
    I'm trying to call my first page(index.jsp) but no responce.
    is there any setting to be done before running the application? and which path do I have to use?.
    please halp
    thank you

    post your faces config file and your web.xml file.

  • Applets and DataBase Access

    Hello, I want to know if it's posible data base acces from a Applet and how do it. The SQLException: No suitable Error is always in the output.The Applet code is:
    import java.applet.*;
    import java.awt.*;
    import java.util.*;
    import java.sql.*;
    import java.net.*;
    import java.io.*;
    public class CreateCoffees extends Applet
         String url = "jdbc:oracle:thin:@localhost:1521:BD";
    Connection con;
    String createString = "insert into COFFEES " +
    "values('Pepe')";
    Statement stmt;
    TextArea textarea = new TextArea();
    public void init()
    setLayout(null);
         textarea.setBounds (10,50,280,150);
         textarea.setText("Empieza");
         add(textarea);
         try
    Class.forName("oracle.jdbc.driver.OracleDriver");
    } catch(java.lang.ClassNotFoundException e) {
         System.err.print("ClassNotFoundException: ");
    System.err.println(e.getMessage());
    textarea.setText(e.getMessage());
    try {
    con = DriverManager.getConnection(url, "SYSTEM", "manager");
    stmt = con.createStatement();
    stmt.execute(createString);
    stmt.close();
    con.close();
    } catch(SQLException ex) {
    System.err.println("SQLException: " + ex.getMessage());
    textarea.setText(ex.getMessage());
    }

    A no suitable driver error means that either your connection string is incorrect or you are not loading the driver (or failing to load it and ignoring the exception.)
    Presumably you have already dealt with the problem of delivering the oracle zip file with your applet?
    And you are not getting the not found exception in your code?

  • Newbie Database Access Question

    I am familiar with SQL and database access from web programming, but have never done these things from within a Java application. My google searching has been fruitless thus far, so I'd appreciate any references to beginner's guides about how to query databases from a Java app and manipulate the resulting recordsets. Anything on Access db's would be ideal.
    TIA,
    John

    Thanks for the reference. I have a question about this section of the tutorial:
    http://java.sun.com/docs/books/tutorial/jdbc/basics/connecting.html
    Under the section "Loading the Drivers" is the following paragraph:
    Loading the driver or drivers you want to use is very simple and involves just one line of code. If, for example, you want to use the JDBC-ODBC Bridge driver, the following code will load it:
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Your driver documentation will give you the class name to use. For instance, if the class name is jdbc.DriverXYZ , you would load the driver with the following line of code:
    Class.forName("jdbc.DriverXYZ");My question is: How do I decide which driver I need for connecting to an Access db on a Win XP machine? Is there perhaps another reference which answers these kinds of questions?
    Thanks again,
    John

  • Simultaneously Connecting Multiple Tables of the same Database to Textboxes of the same Form using a single ADO Control Code using VB6 Enterprise Edition and MS Access 2007

    Iv 10 Tables consisting of atleast 10 fields each in a single Database. Bt, Im only able to connect 1 table at a time to a form using an ADO Control. Im able to add data from table 'student' to text-boxes in my form. Bt, hw can I add data from field(0) of
    Table 'Student' to Textbox1 and data from field(0) of Table 'Marks' to Textbox2 using VB6??
    This is the current sample coding iv got to connect a single table to a form:
    Global con As New ADODB.Connection
    Global rs As New ADODB.Recordset
    Public Function Connect()
    If con.State = 1 Then con.Close
    con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\bca.mdb;Persist Security Info=False"
    End Function
    Private Sub Add_Click()
    If rs.State = 1 Then rs.Close
    rs.Open "select * from student", con, adOpenDynamic, adLockOptimistic
    rs.AddNew
    rs.Fields(0) = (Text1.Text)
    rs.Fields(1) = (Text2.Text)
    rs.Fields(2) = (Text13.Text)
    rs.Fields(3) = (Text4.Text)
    rs.Fields(4) = (Text5.Text)
    rs.Fields(5) = (Text6.Text)
    rs.Fields(6) = (Text7.Text)
    rs.Fields(7) = (Text8.Text)
    rs.Fields(8) = (Text9.Text)
    rs.Fields(9) = (Text10.Text)
    rs.Fields(10) = (Text11.Text)
    rs.Update
    MsgBox " Record Added"
    End Sub
    What can I do to add fields from 2 different tables to different text boxes within the same form using a single ado control using vb6 and MS Access 2007??

    Hi,
    Since VB6 product is not supported in this forum, you may go to these forums for support:
    #Where to post your VB 6 questions
    http://social.msdn.microsoft.com/Forums/en-US/6a0719fe-14af-47f7-9f51-a8ea2b9c8d6b/where-to-post-your-vb-6-questions
    Thank you for your understanding.
    Best regards,
    Franklin
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Using database connection in a servlet and get errors after 8 hours

    Hey,
    I'm running a poker script using applet/servlets and it works great. But for some reason about about 8 hours that database layer stops working. At first I thought it was the connections to mySQL that were timing out (because im using connection pooling) but after turning pooling off (I now create the connection each time) I'm still seeing that same error (I can create a connection but when I do an action ex. like a select statment I get an error). What i'm wondering could it be that the driver I load with Class.forName() some how unloads it's self after x amount of time not being used? Not sure if that is it but if anyone could give me some insight that would be great. The Error i recieve is below:
    INFO: Database Event:DatabaseController: Error executing database query.
    ERROR: Communications link failure due to underlying exception:
    ** BEGIN NESTED EXCEPTION **
    java.net.SocketException
    MESSAGE: Software caused connection abort: recv failed
    STACKTRACE:
    java.net.SocketException: Software caused connection abort: recv failed
         at java.net.SocketInputStream.socketRead0(Native Method)
         at java.net.SocketInputStream.read(Unknown Source)
         at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:104)
         at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:144)
         at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:172)
         at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1839)
         at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2288)
         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2784)
         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1531)
         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1622)
         at com.mysql.jdbc.Connection.execSQL(Connection.java:2370)
         at com.mysql.jdbc.Connection.execSQL(Connection.java:2297)
         at com.mysql.jdbc.Statement.executeQuery(Statement.java:1183)
         at com.softnet.database.DatabaseController.executeDatabaseQuery(DatabaseController.java:190)
         at com.softnet.games.GameServer.validateUser(GameServer.java:438)
         at com.softnet.games.GameServer.handleData(GameServer.java:113)
         at com.softnet.network.HttpConnectionThread.run(HttpServletListener.java:191)
    ** END NESTED EXCEPTION **
    I know the query is good because it works all other times just not after about 8 hours.
    --Z3r0CooL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    Hey,
    Thanks for the responces. For the connection pooling I would open 5 connections and keep them open. So i though maybe after 8 hours after not being used they would timeout. Thats why i turned off conection pooling and create a new connection each time. Anyways i'll post the code below incase i made a mistake somewhere.
    package com.softnet.database;
    /************************ DatabaseControler **************************/
    import java.sql.*;
    import java.util.*;
    import com.softnet.database.DatabaseConnectionPool;
    import com.softnet.database.DatabaseSettings;
    public class DatabaseController
    implements DatabaseListener
         //Used to make sure the database driver is loaded
         private boolean databaseDriverState = false;
         //Used to store a database connection
         private Connection databaseConnection = null;
         //If to user connection pooling or not
         private boolean useConnectionPooling = false;
         //Used to hold the connection pool varible
         private DatabaseConnectionPool connectionPool = null;
         //Used to store database settings
         private DatabaseSettings databaseSettings;
         //Used to hold the DatabaseController listeners
         private List databaseControllerListeners = new ArrayList();
         //min number of connections for connection pool
         private int minNumberOfConnections = 1;
         //max number of connections for connection pool -1 is unlimited
         private int maxNumberOfConnections = -1;
         //DatabaseController Constructors
         public DatabaseController(DatabaseSettings databaseSettings)
              this.databaseSettings = databaseSettings;
              databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
         public DatabaseController(DatabaseSettings databaseSettings, boolean useConnectionPooling, int minNumberOfConnections, int maxNumberOfConnections)
              this.databaseSettings = databaseSettings;
              this.useConnectionPooling = useConnectionPooling;
              this.minNumberOfConnections = minNumberOfConnections;
              this.maxNumberOfConnections = maxNumberOfConnections;
              if(useConnectionPooling == true)
                   connectionPool = new DatabaseConnectionPool(databaseSettings, minNumberOfConnections, maxNumberOfConnections);
                   connectionPool.addDatabaseListener(this);
              else
                   databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
         public DatabaseController() {}
         //Database Settings Get/Set
         public DatabaseSettings getDatabaseSettings()
              return databaseSettings;
         public void setDatabaseSettings(DatabaseSettings databaseSettings)
              this.databaseSettings = databaseSettings;
         //Connection Pooling Get/Set
         public boolean getConnectionPooling()
              return useConnectionPooling;
         public void setConnectionPooling(boolean useConnectionPooling, int minNumberOfConnections, int maxNumberOfConnections)
              this.useConnectionPooling = useConnectionPooling;
              this.minNumberOfConnections = minNumberOfConnections;
              this.maxNumberOfConnections = maxNumberOfConnections;
              if(useConnectionPooling == true)
                   if(connectionPool == null)
                        connectionPool = new DatabaseConnectionPool(databaseSettings, minNumberOfConnections, maxNumberOfConnections);
                        connectionPool.addDatabaseListener(this);
              else
                   if(connectionPool != null)
                        connectionPool.destroyConnections();
                        connectionPool.removeDatabaseListener(this);
                        connectionPool = null;
         //Return if there connected
         public boolean isConnected()
              boolean isConnected;
              if(databaseConnection != null)
                   isConnected = true;
              else
                   isConnected = false;
              return isConnected;
         //Used to connect to database or get a connection for the connection pool
         public void connect()
              if(databaseDriverState == false)
                   databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
              //If we dont have a current connection, make one
              if(databaseConnection == null && databaseDriverState == true)
                   if(useConnectionPooling == false)
                        try
                             databaseConnection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
                        catch (SQLException sqle)
                             //Raise event
                             raiseDatabaseEvent("DatabaseController: Error connecting to database. \nERROR: " + sqle.getMessage());
                             databaseConnection = null;
                   else
                        databaseConnection = connectionPool.getConnection();
         //Used to disconnect from the database or give back the connection to the connection pool
         public void disconnect()
              if(databaseConnection != null)
                   if(useConnectionPooling == false)
                        try
                             //Close DB Connection
                             databaseConnection.close();
                        catch(SQLException ignore) {}
                        finally
                             databaseConnection = null;
                   else
                        connectionPool.returnConnection(databaseConnection);
                        databaseConnection = null;
         public ResultSet executeDatabaseQuery(String sSQL)
              ResultSet databaseResult = null;
              if(databaseConnection != null)
                   try
                        Statement databaseStatement = databaseConnection.createStatement();
                        databaseResult = databaseStatement.executeQuery(sSQL);
                   catch(SQLException sqle)
                        //Raise event
                        raiseDatabaseEvent("DatabaseController: Error executing database query.\nSQL: " + sSQL + "\nERROR: " + sqle.getMessage());
              return databaseResult;
         public int executeDatabaseUpdate(String sSQL)
              int rowsAffected = -1;
              if(databaseConnection != null)
                   try
                        Statement databaseStatement = databaseConnection.createStatement();
                        rowsAffected = databaseStatement.executeUpdate(sSQL);
                   catch(SQLException sqle)
                        //Raise event
                        raiseDatabaseEvent("DatabaseController: Error executing database update.\nSQL: " + sSQL + "\nERROR: " + sqle.getMessage());
              return rowsAffected;
         //Used to load the Database Driver
         private boolean loadDatabaseDriver(String databaseDriver)
              boolean driverLoaded;
              if(databaseDriver.equals("") == false)
                   try
                        //Load Database Driver
                        Class.forName(databaseDriver).newInstance();
                        driverLoaded = true;
                   catch (Exception e)
                        //Raise event
                        raiseDatabaseEvent("DatabaseController: Error loading database driver. \nERROR: " + e.getMessage());
                        driverLoaded = false;
              else
                   driverLoaded = false;
              return driverLoaded;
         //Wrap the DatabaseConnectionPool Error to the DatabaseController
         public void databaseEventOccurred(DatabaseEvent de)
              raiseDatabaseEvent(de.getErrorMessage());
         //Event Handling Code
         //Used to add database listeners (Its sync'd so you can change the listeners when firing an event)
    public synchronized void addDatabaseListener(DatabaseListener databaseControllerListener)
    databaseControllerListeners.add(databaseControllerListener);
    //Used to remove a listener from the list (Its sync'd so you can change the listeners when firing an event)
    public synchronized void removeDatabaseListener(DatabaseListener databaseControllerListener)
    databaseControllerListeners.remove(databaseControllerListener);
    //Used to send the raise event to the listeners
    private synchronized void raiseDatabaseEvent(String databaseError)
    DatabaseEvent databaseEvent = new DatabaseEvent(this, databaseError);
    Iterator listeners = databaseControllerListeners.iterator();
    while(listeners.hasNext())
         DatabaseListener listener = (DatabaseListener) listeners.next();
    listener.databaseEventOccurred(databaseEvent);
    /********************* DatabaseConnectionPool **************/
    package com.softnet.database;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import com.softnet.database.*;
    import com.softnet.database.DatabaseSettings;
    public class DatabaseConnectionPool
         //min number of connections
         private int minNumberOfConnections = 1;
         //max number of connections -1 is unlimited
         private int maxNumberOfConnections = -1;
         //Store the connections
         protected Hashtable databaseConnections = null;
         //Database Info
         protected DatabaseSettings databaseSettings;
         //to hold Driver state
         private boolean databaseDriverState = false;
         //To hold connection checker
         private DatabaseConnectionCheck connectionChecker = null;
         //Used to hold the DatabaseConnectionPool listeners
         private List databaseConnectionPoolListeners = new ArrayList();
         public DatabaseConnectionPool(DatabaseSettings databaseSettings, int minNumberOfConnections, int maxNumberOfConnections)
              this.databaseSettings = databaseSettings;
              this.minNumberOfConnections = minNumberOfConnections;
              this.maxNumberOfConnections = maxNumberOfConnections;
              //Load Driver
              databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
              //Create connection
              createConnections();
         public DatabaseConnectionPool(int minNumberOfConnections, int maxNumberOfConnections)
              this.minNumberOfConnections = minNumberOfConnections;
              this.maxNumberOfConnections = maxNumberOfConnections;
         //Database Settings Get/Set
         public DatabaseSettings getDatabaseSettings()
              return databaseSettings;
         public void setDatabaseSettings(DatabaseSettings databaseSettings)
              this.databaseSettings = databaseSettings;
         //Driver State Get
         public boolean getDatabaseDriverState()
              return databaseDriverState;
         public void createConnections()
              if(databaseDriverState == false)
                   databaseDriverState = loadDatabaseDriver(databaseSettings.getDatabaseDriver());
              //Create all connections and load the minimum in the Hashtable
              if(databaseConnections == null)
                   if(databaseDriverState == true && minNumberOfConnections != 0)
                        databaseConnections = new Hashtable();
                        for(int i = 0; i < minNumberOfConnections; i++)
                             try
                                  databaseConnections.put(DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword()), Boolean.FALSE);
                             catch(SQLException sqle)
                                  //Problem break loop and destroy any connections
                                  destroyConnections();
                                  //Raise event
                                  raiseDatabaseEvent("DatabaseConnectionPool: Error creating database connections. \nERROR: " + sqle.getMessage());
                                  break;
              //If no connection check exists create one
              if(connectionChecker == null)
                   connectionChecker = new DatabaseConnectionCheck(this);
                   connectionChecker.start();
         public Connection getConnection()
              Connection connection = null;
              boolean errorWithConnection = false;
              Enumeration connections = databaseConnections.keys();
              synchronized (databaseConnections)
                   while(connections.hasMoreElements())
                        errorWithConnection = false;
                        connection = (Connection) connections.nextElement();
                        Boolean state = (Boolean) databaseConnections.get(connection);
                        //If connection is not used, use it.
                        if(state == Boolean.FALSE)
                             try
                                  connection.setAutoCommit(true);
                             catch(SQLException e)
                                  //Problem with connection remove connection and replace it
                                  databaseConnections.remove(connection);
                                  try
                                       connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
                                  catch(SQLException sqle)
                                       errorWithConnection = true;
                             if(errorWithConnection == false)
                                  // Update the Hashtable to show this one's taken
                                  databaseConnections.put(connection, Boolean.TRUE);
                                  // Return the connection
                                  return connection;
                   //All connections being used check to max to see if we can make a new one
                   if(maxNumberOfConnections == -1 || maxNumberOfConnections > databaseConnections.size())
                        try
                             connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
                        catch(SQLException sqle)
                             errorWithConnection = true;
                        if(errorWithConnection == false)
                             databaseConnections.put(connection, Boolean.TRUE);
                             return connection;
              //If not connections free and max connections reached wait for a free connection
              return getConnection();
         public void returnConnection(Connection connection)
              boolean errorWithConnection = false;
              //Make sure connection still works
              try
                   connection.setAutoCommit(true);
              catch(SQLException e)
                   //Problem with connection remove connection and replace it
                   databaseConnections.remove(connection);
                   try
                        connection = DriverManager.getConnection(databaseSettings.getDatabaseURL(), databaseSettings.getUserName(), databaseSettings.getUserPassword());
                   catch(SQLException sqle)
                        errorWithConnection = true;     
              if(errorWithConnection == false)
                   databaseConnections.put(connection, Boolean.FALSE);
         public void destroyConnections()
              Connection connection = null;
              if(databaseConnections != null)
                   //Close all connections
                   Enumeration connections = databaseConnections.keys();
                   while (connections.hasMoreElements())
                        connection = (Connection) connections.nextElement();
                        try
                             connection.close();
                        catch(SQLException ignore) {}
                   //Free up hashtable
                   databaseConnections = null;
         private boolean loadDatabaseDriver(String databaseDriver)
              boolean driverLoaded;
              if(databaseDriver.equals("") == false)
                   try
                        //Load Database Driver
                        Class.forName(databaseDriver);
                        driverLoaded = true;
                   catch (ClassNotFoundException cnfe)
                        //Raise event
                        raiseDatabaseEvent("DatabaseController: Error loading database driver. \nERROR: " + cnfe.getMessage());
                        driverLoaded = false;
              else
                   driverLoaded = false;
              return driverLoaded;
         //Event Handling Code
         //Used to add database listeners (Its sync'd so you can change the listeners when firing an event)
    public synchronized void addDatabaseListener(DatabaseListener databaseConnectionPoolListener)
    databaseConnectionPoolListeners.add(databaseConnectionPoolListener);
    //Used to remove a listener from the list (Its sync'd so you can change the listeners when firing an event)
    public synchronized void removeDatabaseListener(DatabaseListener databaseConnectionPoolListener)
    databaseConnectionPoolListeners.remove(databaseConnectionPoolListener);
    //Used to send the raise event to the listeners
    private synchronized void raiseDatabaseEvent(String databaseError)
    DatabaseEvent databaseEvent = new DatabaseEvent(this, databaseError);
    Iterator listeners = databaseConnectionPoolListeners.iterator();
    while(listeners.hasNext())
         DatabaseListener listener = (DatabaseListener) listeners.next();
    listener.databaseEventOccurred(databaseEvent);
    class DatabaseConnectionCheck extends Thread
         private DatabaseConnectionPool connectionPool;
         DatabaseConnectionCheck(DatabaseConnectionPool connectionPool)
              this.connectionPool = connectionPool;
         public void run()
              try
                   while(true)
                        //check threads every 30 seconds
                        this.sleep(300000);
                        if(connectionPool.databaseConnections != null)
                             Connection connection = null;
                             Enumeration connections = connectionPool.databaseConnections.keys();
                             synchronized (connectionPool.databaseConnections)
                                  while(connections.hasMoreElements())
                                       connection = (Connection) connections.nextElement();
                                       Boolean state = (Boolean) connectionPool.databaseConnections.get(connection);
                                       //If connection is not used, use it.
                                       if(state == Boolean.FALSE)
                                            try
                                                 connection.setAutoCommit(true);
                                            catch(SQLException e)
                                                 //Problem with connection remove connection and replace it
                                                 connectionPool.databaseConnections.remove(connection);
                                                 try
                                                      connection = DriverManager.getConnection(connectionPool.databaseSettings.getDatabaseURL(), connectionPool.databaseSettings.getUserName(), connectionPool.databaseSettings.getUserPassword());
                                                 catch(SQLException sqle)
                                                      connection = null;
                                                 // Update the Hashtable with new connection if its not null
                                                 if(connection != null)
                                                      connectionPool.databaseConnections.put(connection, Boolean.FALSE);
              catch(InterruptedException ignored) {}     
    Basicly the why it works is the connection pool hold the database connections. When the user needs a connection they use the database controller to request a connection (By create a instance and called the connect() method) and the connection is either created or grabed from the connection pool. After the user is done with the connection they call the disconnect() method which closes the connection or returns it to the connection pool.
    --Z3r0CooL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

  • How to handle and manage a multi Database access in runtime with LCDS?

    Hello there
    I got several customer working with the same application and I wonder how,  with LCDS,  to manage  in a runtime a multi dataBase access; without creating a configuration "mxl" file in
    the folder catalina for each database.
    Indeed, each customer have their own dataBase, and so far, I did not find out how to avoid creating a config xml file in catalina for every single database; which force me to create as well for each customer a  folder application, since the name of the config file in catalina require a folder application to be ran under tomcat....
    Thus, my question is :
    Is there anyway to create only one configuration mxl file in catalina (in the server side) and then from the client side (application) let the user select its environment (meaning its database) to run the application.... this technic can be also used for multi database environment such as : Dev / Test / Prod   environment (or database) where the same application can access to.
    Please if any one have an idea or already delt with; just let me know, because I'm entering in a bootle neck and the situation is getting serioulsy critical....
    Regards

    Hello Ulrich,
    with compact and repair I mean the MSAccess function "Compact and Repair".
    Please follow the link below for more details:
    http://office.microsoft.com/en-us/access-help/compact-and-repair-an-access-file-HP005187449.aspx
    Normally you can execute this function directly in Access or with the Windows ODBC Data Sources Administrator  => "Control Panel" => "Administrative Tools" => "Data Sources (ODBC)"...
     I want to execute this function via cvi code and not by hand ;-).
    Thank you for your support.
    Frank

Maybe you are looking for

  • Using iTunes to create an MP3 CD that can be used on a DVD player

    I recently attempted to create what I believed to be an MP3 CD from iTunes that my DVD player would be able to play. My DVD player was unable to read the CD (No Disc message). Come to find out that it creates the CD in a Mac format instead of an ISO

  • Adobe failing to initialize

    I am trying to install adobe reader and adobe flash. My computer says that it sucessfully dow nloads but then it fails to initialize. any ideas how to fix this issue?????

  • Why always having to render?

    Hi. Using a JVC GZ-HD7 with FCE4 in full High Definition. I find I have to render after every edit before I can play it. Any idea what I'm doing wrong - or is this just how it is? FCE EasySetup config is Apple Intermediate Codec at1080i50 at 25fps an

  • Okay, this is starting to be unacceptable.

    I'm already regretting this upgrade. I was having issues with Bridge CS6, so I figured I'd upgrade to CC to see if that helps; it didn't. Bridge just won't work. Then I notice I can't export media from Premeir on CC, so I did a clean swipe of everyth

  • IPhoto to Photoshop

    I like to use iPhoto to scroll through all my photos, etc., but then I use photoshop CS3 to edit. After editing a photo in photoshop and saving it as a new file, it doesn't show up in iPhoto. It's in the iPhoto directory, but it doesn't show up in th