Java bean & SQL Query

Hi;
I'm facing problem in running my application on different relational databses b'cos i wrote all my queries for Oracle 8i on Win-NT environment.& now i've to deploy the application on the Linux with MS-SQL database.
How to write sql query in java beans so that it run on all the relational databases without making changes to the query in every bean. OR
How to get the compatible query for different databases?
Thanks in advance.

Hey Kalpesh
If you have just the Connection process encapsulated in the Bean, then you can use it as a Singleton object.
Just take a look at the following snippet
public static getConnection(String db) {
if (db.equalsIgnoreCase("ORACLE")) {
if (con != null) {
return con;
} else {
con = DriverManager.getConnection("jdbc:oracle:thin:@"+IP+", " + user + ", " + password);
} else if (db.equalsIgnoreCase("SQLSERVER")) {
if (con != null) {
return con;
} else {
con = DriverManager.getConnection(sqlServerDBConnectionString);
This way you can reduce the number of live connections.
In the JSP, you can access this bean as:
<jsp:useBean id="mb" class="MyBean" scope=whatever/>
Connection con = mb.getConnection("ORACLE");
or
Connection con = mb.getConnection("SQLSERVER");
This way, you can meet your objective.
Check it out.

Similar Messages

  • URGENT! Java Bean Query

    I am using Tomcat 3.1 and MySQL database for an application I am designing. Below is the code for a java bean that registers users details. The code compiles correctly, but I would like to know if there is any code that I might have left out? What changes should I make to make it more user friendly?
    I do not want to use servlets, as they are very difficult to setup.
    REGISTRATION.JAVA
    package gcd;
    import java.sql.*;
    import java.util.*;
    import java.lang.*;
    import java.awt.*;
    import java.text.*;
    import java.io.*;
    import com.mysql.jdbc.*;
    public class Registration
         public Registration(){}
    String first_name;
    String last_name;
    String role;
    String email;
    String error;
    java.sql.Connection con;
    public void setFirstName( String value )
    first_name = value;
    public void setLastName( String value )
    last_name = value;
    public void setRole( String value )
    role = value;
    public void setEmail( String value )
    email = value;
    public String getFirstName()
    return first_name;
    public String getLastName()
         return last_name;
    public String getRole()
         return role;
    public String getEmail()
         return email;
         public void connect() throws ClassNotFoundException, SQLException, Exception
    try
    System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    con = DriverManager.getConnection("jdbc:mysql://localhost/gcdBB_db","","");
    catch (ClassNotFoundException e)
    error = "ClassNotFoundException: Could not locate DB driver.";
    throw new ClassNotFoundException(error);
    catch (SQLException e)
    error = "SQLException: Could not connect to database.";
    throw new SQLException(error);
    catch (Exception e)
    error = "Exception: An unknown error occured while connecting to database.";
    throw new Exception (error);
         public void disconnect() throws SQLException
    try
    if(con != null)
    con.close();
    catch (SQLException e)
    error = ("SQLException: Unable to close the database connection.");
    throw new SQLException(error);
    public java.sql.ResultSet validateRegistration(String firstname, String lastname, String role, String email) throws SQLException, Exception
    java.sql.ResultSet rs = null;
    try
    String queryString = ("INSERT INTO registration (firstname,lastname,role,email) VALUES ('" + firstname + "','" + lastname + "','" + role + "','" + email + "';");
    java.sql.Statement stmt = con.createStatement();
    rs = stmt.executeQuery(queryString);
    catch (SQLException e)
    error = "SQLException: Could not execute the query.";
    throw new SQLException(error);
    catch (Exception e)
    error = "An exception occured while retrieving users.";
    throw new Exception(error);
    return rs;
    Thanks,
    Niall

    in JavaBean class:
    The setting/getting method should be matched with the first letter capitalized. ie.
    String firstName;
    String lastName;
    public void setFirstName(String value) { firstName = value ; }
    public String getFirstName() { return firstName; }
    public void setLastName(String value) { lastName = value ; }
    public String getLastName() { return lastName; }
    String role and email coded correctly.
    remember: put your bean in package and call from package.

  • How Can I Execute Sql Query in Managed bean?

    Hi,
    I want to execute sql query in managedbean and get the query result. How can I do?
    Best wishes!

    You can do this by having current Database connection your application is using like this
    public static synchronized DBTransaction getDBTransaction(){
    FacesContext ctx = FacesContext.getCurrentInstance();
    ValueBinding vb = ctx.getApplication().createValueBinding("#{data}");
    BindingContext bc = (BindingContext)vb.getValue(ctx.getCurrentInstance());
    DataControl dc = bc.findDataControl("AppModuleDataControl");
    ApplicationModuleImpl am = ((ApplicationModuleImpl)(ApplicationModule)dc.getDataProvider());
    return am.getDBTransaction();
    and then user DBTransaction object to create Statement and PreparedStatement you can find those in java doc.

  • How to use sql query in java ?

    i don't know how to use sql query in java code.
    who can give me some advice?
    thanks

    http://java.sun.com/developer/onlineTraining/Database/JDBC20Intro/

  • Use an SQL Query in a backing bean

    hi,
    I like to know how to run an SQL query in a backing bean method, this being the code I tried , his goal is to fill the field "cin" with data coming from my database, here is the Code:
    public String cb2_action() {
    BindingContainer bindings = getBindings();
    OperationBinding operationBinding = bindings.getOperationBinding("CreateInsert");
    Object result = operationBinding.execute();
    if (!operationBinding.getErrors().isEmpty()) {
    return null;
    DCIteratorBinding dciter =(DCIteratorBinding) bindings.get("PersonneView1Iterator");
    Row row=dciter.getCurrentRow();
    Statement stmt = this.getDBTransaction().createStatement(1);
    try {
    ResultSet rs = stmt.executeQuery("select max(cin) from personne");
    while( rs.next() ){
    row.setAttribute("cin", rs.getInt(1)+1);
    } catch (SQLException ex) {
    ex.printStackTrace();
    return "go";
    at run time it give an error at this line : Statement stmt = this.getDBTransaction().createStatement(1);
    please check and correct me
    thanks in advance

    Hi,
    Initially I would like to say that this should not be used if you are trying to get a PrimaryKey as it would cause serious concurrency issues.
    For example lets say that you want whenever you create a new Employee to set his DepartmentId equal to the max department.
    We could create a readOnly VO (lets name it MaxDepartmentId) with a query that returns the max departmentId:
    select max(Department_Id) as maxDep from DepartmentsAfter that we need to add the MaxDepartmentId VO as a ViewAccessor in our Employees Vo,
    override the create() method in the EmployeesRowImpl and add some code like this:
    public class EmployeesRowImpl extends ViewRowImpl {
        @Override
        protected void create(AttributeList attributeList) {
            Row r=getMaxDepartmentId().first();
            if(r!=null){
                 Number max=(Number)r.getAttribute("Maxdep");
                 attributeList.setAttribute("DepartmentId", max);
            super.create(attributeList);
    }That's all.
    If you run this you will see that when you create a new employee it has a default value.
    Gabriel.

  • How to implement sql query in cmp bean?

    let's say that i want to join two tables and use grouping, counting and sorting expresion. it is no problem with sql query but what about cmp bean?
    of course i can make one bmp bean or session bean and run directly sql expresion, but then what is the point of using cmp beans?
    thanks
    winnicki

    If yout need post-query for filling descriptive colums (eg. department name in emploees) you should build a view object which includes the descriptive colums by joining the relevent tables

  • SQL query  in managed bean

    hi
    i have some idea about setwhereClause() method ..... but in my case i want to use one SQL query (select * from tab )...i dont know how to use ....
    (without view object we cant use setwhereclause() method thatsy i have to use sql statement in managed bean ........)
    thanks in advance

    First of all, you don't want to have any SQL in a managed bean. Managed beans are part of the View layer, and the query should be part of the Model. So what you want to do is add some code to your Model project. So you are trying to do "SELECT * FROM tab". Why not just create a read-only View Object (VO) for the query in the Model (assuming that you are using ADF BC).
    Now as for setWhereClause - what do you need in your where clause? You can add where clauses to the query that defines your VO, without needing to resort to using this method. You can even add bind variables for the where clauses, and just drag the ExecuteWithParams method onto your pages, which will give you a place to set the bind variables before executing the query.
    You can create your own method in the VO's implementation class, in which you may call setWhereClauseParam to gain more control over how the bind variables are set. Then you make the method available as an operation in the data controls by making it an exposed method to the client interface. You can use setWhereClause in such a method if you need to do so, but there are good performance reasons not to do so if a bind variable will do the job. setWhereClause can also set you up for SQL Injection attacks on your application's security.

  • Sql Query in Custom Java Class in OIM 9x

    Hi All,
    I m having requirement where I need to execute SQL Select Query in custom java class.
    The class is a action class ,in a method I m trying to execute SQL Query as below
         sdkDataSet = new tcDataSet();
              dataprovider =sdkDataSet.getDataBase();
                   //sdkDataSet = new tcDataSet();
                   sdkDataSet.setQuery(dataprovider, sdkQuery);
                   sdkDataSet.executeQuery();
                   logger.debug(CLASSNAME + methodName + "Query Executed");
                   if (sdkDataSet.getRowCount() > 0)
                        sdkName = sdkDataSet.getString(0);
                        logger.debug(CLASSNAME + methodName+ "The sdkName is " + sdkName);
    Error is returned in logs
    tcDataSetException    Must set a query before executing
    I hope issue is coming due to dataprovider dbrefence.
    Kindly let me know how to execute sql query in a action class.
    Regards,
    Krish

    Hi Pallavi,
    Thanks for your reply...
    OOTB class Name is com.thortech.xl.webclient.actions.ApprovalsAction
    This class will display the pending Approvals for a user.On pending approval page, I need to add one more attribute let say email of the beneficiary user.I have a query which will fetch email value based on RequestID.
    select usr.usr_email from rqu rqu, usr usr, act act  where rqu.usr_key=usr.usr_key and usr.act_key=act.act_key and rqu.req_key=1234*
    Pls let me know if there is any way to get email with or with out executing Query.
    Regards,
    Krish

  • How i can execute the sql query in java code

    I already have sql query in jave plateform i need to execute this code how i can do that. i have unix env and with oracle database. should i just run this query in my sqlplus. this file has extention .java. thanks

    you can create a project in JDeveloper add the java file to it, add the Oracle JDBC library to the project properties and then hit the run button.

  • Datasource works with java code but not with sql:query dataSource=...

    Hello everyone! I have a small problem with binding a DataSource object via JNDI and retrieving it in a web application. This is the case:
    I did not wish to make the DataSource available through the server.xml, because I want to create applications that can be bundled in a simple .war file. So I create the DataSource when the context is created in the contextInitialized() method of ServletContextListener like this:
    InitialContext initialContext = new InitialContext();
    Properties properties = new Properties();
    properties.setProperty( "driverClassName", "com.mysql.jdbc.Driver" );
    properties.setProperty( "factory",   "org.apache.commons.dbcp.BasicDataSourceFactory" );
    properties.setProperty( "username", servletContext.getInitParameter( "dbUser" ) );
    properties.setProperty( "password", servletContext.getInitParameter( "dbPass" ) );
    properties.setProperty( "url",      servletContext.getInitParameter( "dbUrl" ) );
    properties.setProperty( "defaultAutoCommit", "false" );
    properties.setProperty( "maxActive",         "25" );
    properties.setProperty( "initialSize",       "15" );
    properties.setProperty( "maxIdle",           "10" );
    properties.setProperty( "testOnBorrow",      "true" );
    properties.setProperty( "testOnReturn",      "true" );
    properties.setProperty( "testWhileIdle",     "true" );
    properties.setProperty( "validationQuery",   "SELECT 1" );
    properties.setProperty( "removeAbandoned",   "true" );
    DataSource dataSource = BasicDataSourceFactory.createDataSource( properties );
    initialContext.rebind( "daers", dataSource );Please comment if you think this is a bad idea!
    All the above seems to work fine. When I try to retrieve the DataSource in a .jsp file then it all works fine like this:
    <% try {
            javax.naming.InitialContext initialContext = new javax.naming.InitialContext();
            java.sql.Connection conn = ( ( javax.sql.DataSource )initialContext.lookup( "daers" )).getConnection();
            java.sql.Statement statement = conn.createStatement();
            java.sql.ResultSet resultSet = statement.executeQuery("SELECT users.name FROM users;");
            while (resultSet.next()) {
                System.out.println(resultSet.getString(1));
        } catch ( java.sql.SQLException e ) {
            e.printStackTrace();
        } catch ( javax.naming.NamingException e ) {
            e.printStackTrace();
    %>But when I try to execute the same sql query through the appropriate JSTL taglib I get a:
    javax.servlet.ServletException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"The JSTL code I use is this:
    <sql:query dataSource = "daers" var = "query" scope = "page">
            SELECT users.name
            FROM users
        </sql:query>I do put both of the two above pieces of code in the same .jsp page and the first works but the second causes the exception...
    Any clues..?
    Is it illegal to lookup a DataSource in <sql: dataSource=...> if the DataSource is not registered in the server.xml file..?
    If so, do I have any alternatives (like putting the DataSource as a servlet context variable)..?

    I added a response in your original message:
    http://forum.java.sun.com/thread.jspa?messageID=9629812
    Let's keep to it since splitting things across two posts might be confusing.

  • Java.lang.NoClassDefFoundError: oracle/xml/sql/query/OracleXMLQuery

    Hello, all.
    I get this error message:
    java.lang.NoClassDefFoundError: oracle/xml/sql/query/OracleXMLQuery
    at oracle.xml.xsql.actions.XSQLQueryHandler.handleAction(Compiled Code) ...
    when trying to view an xsql page with the jswdk 1.0.1 web server. (I have no problems when using Web-to-go)
    Classpath includes:
    C:\jdk1.1.8\lib\classes.zip;
    C:\xsql\lib\oraclexsql.jar;
    C:\xsql\lib\xmlparserv2.jar;
    C:\xsql\lib\xsu111.jar;
    C:\xsql\lib\classes111.zip;
    C:\xsql\lib;
    What could be the problem?
    Mateja
    null

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Steven Muench ([email protected]):
    Only thing I can think of is that maybe your server classpath is getting too long. I recall one of the Java Web Server releases having a classpath length limit that caused strange errors like this because that .jar files you thought were on your classpath were getting their path names truncated so the Java VM cannot find the JAR's.
    Try putting xsu111.jar earlier in the list of JAR's and/or try shortening the classpath (perhaps by using SUBST'd drive letters or softlinks on Unix to shorten the path names).<HR></BLOCKQUOTE>
    Putting the xsu11.jar file towards the start of the path did not help.
    I have rewriten the entire bat file that creates the CLASSPATH and starts the server and things now seem to work. There must have been some error in the original bat file, that I just couldn't see.
    Anyway - I thank you for your help.
    null

  • SQL Query With Java

    I have a database field with over 1000 drawing numbers. How can I write a query to only select a specified number of drawing numbers? For example, if I want to only select 50 drawing numbers instead of all 1000, how can I write this query?
    Thanks in advance.
    Dar

    The above mentioned query is not supported by all databases even though it's a valid SQL query. For me it didn't work with Oracle.
    If you are using it in a Java program, you can set the number of rows to be returned by a query on the statement (java.sql.Statement) object using the setMaxRows call.
    HTH

  • Java.beans.Statement & java.sql.Statement

    My old code from jdk1.3.1 throws the ambiguous class thingie-mo-bob. Why did they implement the new java.beans.Statement, and is there anyway to make it default to the old java.sql.Statement without having to go through all the old code and add import java.sql.Statement. I have like 200 jsp files 'n it will take a loooong time!
    Pete

    There r two ways to do this.
    (i) One is Implement the java.sql.Statement
    like
    package java.beans;
    public interface Statement implements
    java.sql.Statement {
    }What? Are you suggesting he edit the source code for java.beans.Statement and make it implement java.sql.Statement?? I would most certainly not suggest that solution- beside violating the licensing agreement, it has troubling consequences since you are basically redefining the structure of a class in a way that makes no functional sense- that is, there is no reason for java.beans.Statement to implement methods like getConnection() and the other signatures of java.sql.Statement.
    I'm not sure if I'm reading your response correctly or not, but I would definitely not refactor java.beans.Statement just to get this problem solved with out editing files ... ... since java.sql.Statement is used so widely, perhaps they should have considered a different name for java.beans.Statement , although you hate to base a name off of what's going to cause the least problems, rather then what makes the most sense ... ... any way, I guess it doesn't matter now: the name has been selected .... I'd be interested to hear how you solved the problem.

  • Java Web Analyzer security hole in SQL Query Spreadsheet using JDBC-ODBC bridge

    Hi,<BR><BR>I use Hyperion Analyzer 7.0.1 on Windows 2003 and relation database DB2 v8.2.<BR><BR>I did:<BR>1. log in to Java Web Analyzer<BR>2. button New<BR>3. Select Layout: Custom Report<BR>4. from toolbar pull down to desktop "SQL Spreadsheet" option<BR>5. "Enter SQL Query" window opens, from JDBC Driver drop down window select "JDBC-ODBC Bridge"<BR>6. in "JDBC Connection String" window replace "db1" string with database name<BR>7. leave JDBC Username and JDBC Password empty (this is default)<BR>8. click on "Test Connection" button.<BR>9. "Test Connection" window opens with message "Connection Succeded"!!! So connection to database without password succeeded.<BR>10. in "SQL Query window" write any SQL you wish and Database will execute the SQL.<BR><BR><b>Conclusion: Connecting Analyzer with SQL Spreadsheet option to relation database DB2 is possible without password.</b><BR><BR>Question: Is there any way to prevent users from executing "SQL Spreedsheet" option?<BR><BR>Thanks,<BR>Grofaty

    try
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection(dsn,"guest","guest");
    OR DriverManager.getConnection(dsn);
    System.out.println("Conection's opened");
    catch(ClassNotFoundException cnfe)
    System.err.println(cnfe);
    catch(SQLException sqle)
    System.err.println(sqle);
    try that code and double check you DSN Name . it's a good practice to greate a system DSN.
    i hope that helps.
    FEEL FREE TO ASK. WON'T BITE U
    ABDUL

  • SQLEception using Complex SQL Query with Java Studio Creator2 Build(060120)

    I am evaluating Java Studio Creator2 for a WEB base application project that will be making SQL queries to an Oracle Database but I have stumble into a problem using complex SQL queries.
    I am getting an SQLException "org.apache.jasper.JasperException: java.lang.RuntimeException: java.sql.SQLException: [sunm][Oracle JDBC Driver][Oracle]ORA-00923: FROM keyword not found where expected". I looks like it cut my sql.
    The SQL that I am trying to execute is
    Select part_name
    from table1, table2
    where table1.part_nbr = table2.part_nbr
    and table2.row_add_dt = (select max(table3.row_add_dt)
    from table3
    where table3.ser_part_id =table2.ser_part_id)
    This is a valid query that it is using 2 different selects to get a part number.
    If posible, point me to the best solution were I will be able to make complex SQL queries like the one above and bigger.
    Is there any way that I can read an SQL query file instead of inserting the SQL query string into the setCommand()?

    I have read that document looking for some anwsers on how to make this kind of query. If I try the query that I have above in the query editor ,the query editor will cut off from the last select that is between ().
    I beleave, there is a work around using the inner joint or outter join command. I will try them to see If I get the corrent result. If not, then I have to keep on asking for possible solutions.
    Anyway, someone in the Creator Team should take a note in adding something like a special criteria in the Add Query Criteria Box for cases like the one I have. The special criteria will be like using another select/from/where to get some result that will be compare.
    Girish, Are you in the Sun Creator Team?

Maybe you are looking for

  • How to convert a numeric field representing UNIX time to a standard report

    Looking for some help on the creation of a formula that will allow me to convert a numeric string which represent Unix time to a standard date format. Sample string value "1199149200", Jan 1 2008, 1 AM

  • IOException (SQLWarning) while creating pool connection

    Folks, I see the following warning in the weblogic jdbc.log every time a database pool connection is made. This is not causing any problem but it is very annoying. How do we stop this. Is there any sybase setting that needs to be fixed. Any help is a

  • XMod also makes a popping noi

    Hey guys, I've been using the XMod for several weeks now, and I notice randomly after using iTunes and then quitting, the XMod will pipe irregular metallic "pop" noises into my earphones. Sample available: http://www.squarebrain.net/wp-content/upload

  • Adapter Lotus Notes

    All, I am running Release 9.1.0 of the IOM with Notes 7 in Windows and difficulty meeting the following In executing the script lotusNotes.bat to test the connection and create the user in the log NOTES me is returning the following message ERROR,18

  • What does ServletAuthentication put in the session?

    Quick question, The API documentationo for the ServletAuthentication class states: "It performs the authentication call through the Realm and sets the user information into the session." What exactly does the ServletAuthentication class put into the