Null in PreparedStatement update

I am having trouble updateing values with a PreparedStatement when I use null as a value for one of the parameters. Example:
String sql = "UPDATE MYTABLE SET MYFIELD = ? WHERE MYKEY = ?";
PreparedStatement query = myConnection.prepareStatement(sql);
query.setString(1, null);
query.setString(2, "KEYVALUE");
query.executeUpdate();
This always results in the following error:
java.sql.SQLException: Missing IN or OUT parameter at index:: 1
     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:187)
     at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:229)
     at oracle.jdbc.driver.OracleStatement.checkBindsInAndOut(OracleStatement.java:1876)
     at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2476)
     at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:452)
Is there another way to update something with a null value using a prepared statement?

Use
query.setNull(1,oracle.jdbc.OracleTypes.VARCHAR);
instead of query.setString(1, null);No, I tried that and it does not work either. The only time I am able to use nulls for the values in a prepared statement is if it is an insert statement. It does not seem to be possible with an update. Could someone verify that this is true?

Similar Messages

  • Set null in PreparedStatement

    Hi
    I need to set null as a parameter in the PreparedStatement (that will behave as "is null" ).
    the PreparedStatement.setNull is not working.
    any ideas???

    How did you use setNull() in your code? I'm sure there must be something wrong with the way you coded it.

  • Invalid use of Null: 'CStr' - checkbox UPDATE - what the heck?!

    Jeesh...you just think you're beginning to understand things
    and then
    something "weird" happens! Anyway, what is wrong with this?:
    <input <%If
    (CStr((rsCustomer.Fields.Item("deletethis").Value)) =
    CStr("True")) Then Response.Write("checked=""checked""") :
    Response.Write("")%> name="deletethis" type="checkbox"
    id="deletethis"
    value="1" />
    I have this as part of an UPDATE form. If I place a tick in
    the checkbox,
    and submit it, it updates the record correctly as having a 1
    value (True).
    If I open the same UPDATE form, for the same record, it
    displays a check in
    the check box - great.
    However, if the "deletethis" in the user record is initially
    "False" (0),
    the default value for all of my records, and I submit the
    update form
    without changing the deletethis checkbox, it seems to be
    submitting a blank
    value which means that when I re-open the UPDATE form for
    this record, and
    submit the UPDATE again, I get this:
    Error Type:
    Microsoft VBScript runtime (0x800A005E)
    Invalid use of Null: 'CStr'
    //edit-customer.asp, line 838
    I'm sure this is because it is trying to submit a blank
    value, where it
    needs to be either 0 or 1. But why is it submitting
    "deletethis" as a blank
    value?
    When I check my SQL database, the deletethis field shows no
    value, not even
    the word NULL and certainly not a 1 or 0.
    Also, if one of my records already has a 1 value, and I
    change this in the
    UPDATE form, but "unchecking" the deletethis checkbox, again
    it submits a
    blank value! Nyaarg!
    For reference, here is my UPDATE code:
    <%
    If (CStr(Request("MM_update")) = "editcontactdetails") Then
    If (Not MM_abortEdit) Then
    ' execute the update
    Dim MM_editCmd
    Set MM_editCmd = Server.CreateObject ("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_connNAME_STRING
    MM_editCmd.CommandText = "UPDATE dbo.tblCustomers SET
    firstnames = ?,
    surname = ?, billbusiness = ?, billaddress = ?, billaddress1
    = ?,
    billaddress2 = ?, billcity = ?, billregion = ?, billcountry =
    billpostcode = ?, billtelephoneday = ?, billmobile = ?,
    billtelephoneeve =
    ?, billemail = ?, billlocationinfo = ?, username = ?,
    password = ?,
    deletethis = ? WHERE customerID = ?"
    MM_editCmd.Prepared = true
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param1", 202,
    1, 150, Request.Form("firstnames")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param2", 202,
    1, 100, Request.Form("surname")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param3", 202,
    1, 150, Request.Form("businessname")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param4", 202,
    1, 100, Request.Form("billaddress")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param5", 202,
    1, 100, Request.Form("billaddress1")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param6", 202,
    1, 100, Request.Form("billaddress2")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param7", 202,
    1, 100, Request.Form("billcity")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param8", 5,
    1, -1, MM_IIF(Request.Form("billregion"),
    Request.Form("billregion"), null))
    ' adDouble
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param9", 202,
    1, 100, Request.Form("billcountry")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param10", 202,
    1, 75, Request.Form("billpostcode")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param11", 202,
    1, 75, Request.Form("billtelephoneday")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param12", 202,
    1, 50, Request.Form("billmobile")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param13", 202,
    1, 75, Request.Form("billtelephoneeve")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param14", 202,
    1, 150, Request.Form("billemail")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param15", 203,
    1, 1073741823, Request.Form("billlocationinfo")) '
    adLongVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param16", 202,
    1, 25, Request.Form("username")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param17", 202,
    1, 25, Request.Form("password")) ' adVarWChar
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param18", 5,
    1, -1, MM_IIF(Request.Form("deletethis"),
    Request.Form("deletethis"), null))
    ' adDouble
    MM_editCmd.Parameters.Append
    MM_editCmd.CreateParameter("param19", 5,
    1, -1, MM_IIF(Request.Form("MM_recordId"),
    Request.Form("MM_recordId"),
    null)) ' adDouble
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close
    ' append the query string to the redirect URL
    Dim MM_editRedirectUrl
    MM_editRedirectUrl = "index.asp"
    If (Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0)
    Then
    MM_editRedirectUrl = MM_editRedirectUrl & "?" &
    Request.QueryString
    Else
    MM_editRedirectUrl = MM_editRedirectUrl & "&" &
    Request.QueryString
    End If
    End If
    Response.Redirect(MM_editRedirectUrl)
    End If
    End If
    %>
    Please, can someone just tell me what it is, because I can't
    find an
    explanation in the documentation!
    Much appreciated
    Nath.

    Point taken David, ;o) but you must admit that Dreamweaver is
    not strictly
    marketed as such.
    "With Dreamweaver 8, web developers go from start to finish,
    creating and
    maintaining basic websites to advanced applications that
    support best
    practices and the latest technologies."
    (source:
    http://www.adobe.com/uk/products/dreamweaver/)
    Oh, and then there's the price tag! :-o
    I personally think they could have marketed "Notepad" a
    little better! :o)
    Nath.
    "David Powers" <[email protected]> wrote in message
    news:ej25kb$7nv$[email protected]..
    > Lionstone wrote:
    >> DW offers a helping hand when it comes to database
    integration, but you
    >> should expect to do the bulk of the work yourself.
    Beyond a simple
    >> insert/update/delete of a single record in a single
    table, it's all up to
    >> you.
    >
    > Hear, hear. If only more people realized that this is
    the case, they would
    > find Dreamweaver a lot easier to use.
    >
    > --
    > David Powers
    > Adobe Community Expert
    > Author, "Foundation PHP for Dreamweaver 8" (friends of
    ED)
    >
    http://foundationphp.com/

  • Music store account city and state are perpetually "null" -asks for update

    I am trying to buy something through the music store. All my information is there, but it keeps prompting me to update my billing information. My city and state are blank, so I type them in and hit 'done' and it asks me for my county information, which I update.
    Then it returns me to the music store where I hit "buy song" again. Then I am prompted to log in and update my billing information all over again.

    You can't.  Apps are forever tied to the AppleID that purchased them.  Delete the apps with the old AppleID and purchase them with the new AppleID.

  • How to insert a bean variable into MySql using jsp

    Hi, I have a problem that I have been trying to work out for ages..unsuccessfully.
    My web-site takes 2 inputs off a user...does a calculation on them and returns the result to the user.
    I want to then use another jsp page that will take this result and insert it into a database...
    My class code for this is :
    public void updateRepmax(String userName, String repmax) throws SQLException, Exception{
         if(con != null){
         try{
         PreparedStatement update;
         update = con.prepareStatement("UPDATE repmax SET Benchpress = ?, WHERE Member_Name = ?");
         update.setString(1, repmax);
         update.setString(2, userName);
         update.execute();
         } catch(SQLException sqle){
         error = "SQLException: could not update repmax";
         throw new SQLException(error);
         catch(Exception e){
         error = "An exception occured while updating repmax";
         throw new Exception(error);
         } else {
         error = "Exception: connection to database was lost";
         throw new Exception(error);
    My JSP is :
    <%@page import="java.sql.*, placement.*"%>
    <jsp:useBean id="conn" class="placement.DBConnect" />
    <jsp:useBean id="query" class="placement.DBQuery" />
    <jsp:useBean id="bpcalc" class="placement.repmaxBean" />
    <jsp:useBean id="userin" class="placement.User" />
    <html>
    <head><title>Update Repmax</title></head>
    <body>
    <%
    conn.connect();
         String repmax = bpcalc.getRepmax();
         String userName = userin.getUserName();
    query.setCon(conn.getCon());
         query.updateRepmax();
    conn.disconnect();
    %>
         </body>
         </html>
    The variable I am tryin to insert is repmax ,in the class that does the calculation the repmax is a double so I assume that is my first problem(how can this be changed to allow it to insert?)....any help you have to offer would be greatly appreciated... 

    Thanks for your reply sathishkb,
    I am not actually receiving any error message,
    The jsp page is processed and the code seems to be correct however the table in my mysql database is not updated.. my JDBC drivers are working correctly etc.
    I expect that the problem is in my JSP page but dont know what it is
    I have removed that comma in my update statement
    I no longer have the problem of the variable being of type touble as I altered my other code to convert the variable from double to string
    jsp is now:
    <%@page contentType="text/html"%>
    <%@page import="java.sql.*, placement.*"%>
    <jsp:useBean id="conn" class="placement.DBConnect" />
    <jsp:useBean id="update" class="placement.DBQuery" />
    <jsp:useBean id="bpcalc" class="placement.repmaxBean" />
    <jsp:useBean id="currentuser" class="placement.currentuserBean" />
    <html>
    <head><title>Insert Into Repmax</title></head>
    <body>
    <%
    String repmax = bpcalc.repmax;
    String userName =currentuser.name;
    conn.connect();
         update.setCon(conn.getCon());
         update.updateRepmax(repmax,Username);
    conn.disconnect();
    %>
         </body>
         </html>
    the segment of my bean code is :
    public void updateRepmax(String repmax,String userName) throws SQLException, Exception{
         if(con != null){
         try{
         PreparedStatement update;
         update = con.prepareStatement("UPDATE repmax set Benchpress = ? WHERE Member_Name= ?");
         update.setString(1,repmax);
         update.setString(2,userName);
         update.execute();
         } catch(SQLException sqle){
         error = "SQLException: could not update employer";
         throw new SQLException(error);
         catch(Exception e){
         error = "An exception occured while updating employer";
         throw new Exception(error);
         } else {
         error = "Exception: connection to database was lost";
         throw new Exception(error);
    }

  • Dg4odbc to MySQL update errors: "does not support IS NULL in this context"

    I am having a problem with 'where x is null' clauses in update statements to MySQL from 11g, using dg4odbc. Updates using the clause 'where x is null' return errors like this:
    ORA-02070: database PLAZAHOST does not support IS NULL in this context
    The rejected queries never get to mysql. Furthermore, I noticed that select statements with 'where x is null' show up in the mysql query log with the where clause stripped out, although correct results are returned to SQLPlus. It looks as though 'where x is null' is stripped off by dg4odbc, which subsequently applies a secondary filter to the results received from MySQL.
    Note, both statements above work properly when issued from the MySQL client.
    Has anybody seen this? It's a big problem for me, but I can't find any references to other people having the same problem, so I assume I've got something misconfigured -- but I don't know what.
    I'm using MySQL ODBC 5.1 Driver, MySQL 5.1 Community Edition, and Oracle 11g R1 all running on a 32-bit Windows server.
    Thank you -- rick
    =============
    here's a spool of a sample oracle session:
    SQL> col descr1 for a40
    SQL> select * from t1@plazahost;
    id1 descr1
    1 hello
    2
    SQL> descr t1@plazahost
    Name Null? Type
    id1 NUMBER(10)
    descr1 VARCHAR2(255)
    SQL> select * from t1@plazahost where "descr1" is null;
    id1 descr1
    2
    SQL> update t1@plazahost set "descr1"='updated' where "descr1" is null;
    update t1@plazahost set "descr1"='updated' where "descr1" is null
    ERROR at line 1:
    ORA-02070: database PLAZAHOST does not support IS NULL in this context
    SQL> spool off
    =============
    here's the mysql query log snip for the oracle session:
    100804 10:24:20 1637 Connect     moms_oracle@MOMS_HOST on moms
              1637 Query     SET NAMES utf8
              1637 Query     SET character_set_results = NULL
              1637 Query     SET SQL_AUTO_IS_NULL = 0
              1637 Query     set autocommit=0
              1637 Query     select database()
              1637 Query     COMMIT
              1637 Query     SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
              1637 Query     SHOW TABLE STATUS FROM `moms` LIKE 'T1'
              1637 Query     SHOW COLUMNS FROM `moms`.`t1`
              1637 Query     SELECT `id1`,`descr1` FROM `moms`.`t1` LIMIT 0
              1637 Query     SHOW KEYS FROM `moms`.`T1`
              1637 Query     SHOW TABLE STATUS FROM `moms` LIKE 'T1'
              1637 Query     SHOW COLUMNS FROM `moms`.`t1`
              1637 Query     SELECT `id1`,`descr1` FROM `moms`.`t1` LIMIT 0
              1637 Query     SELECT A1.`id1`,A1.`descr1` FROM `T1` A1
              1637 Query     SELECT `id1`,`descr1` FROM `T1`
    100804 10:24:28 1637 Query     COMMIT
              1637 Quit     
    =============
    here's the Oracle HS trace file for the same oracle session:
    Oracle Corporation --- WEDNESDAY AUG 04 2010 10:24:19.608
    Heterogeneous Agent Release
    11.1.0.7.0
    Oracle Corporation --- WEDNESDAY AUG 04 2010 10:24:19.608
    Version 11.1.0.7.0
    Entered hgogprd
    HOSGIP for "HS_FDS_TRACE_LEVEL" returned "DEBUG"
    Entered hgosdip
    setting HS_OPEN_CURSORS to default of 50
    setting HS_FDS_RECOVERY_ACCOUNT to default of "RECOVER"
    setting HS_FDS_RECOVERY_PWD to default value
    setting HS_FDS_TRANSACTION_LOG to default of "HS_TRANSACTION_LOG"
    setting HS_FDS_TRANSACTION_ISOLATION to default of "READ_COMMITTED"
    setting HS_NLS_NCHAR to default of "UCS2"
    setting HS_FDS_TIMESTAMP_AS_DATE to default of "TRUE"
    setting HS_RPC_FETCH_REBLOCKING to default of "ON"
    setting HS_FDS_FETCH_ROWS to default of "100"
    setting HS_FDS_RESULTSET_SUPPORT to default of "FALSE"
    setting HS_FDS_PROC_IS_FUNC to default of "FALSE"
    setting HS_FDS_CHARACTER_SEMANTICS to default of "FALSE"
    setting HS_FDS_MAP_NCHAR to default of "TRUE"
    setting HS_NLS_DATE_FORMAT to default of "YYYY-MM-DD HH24:MI:SS"
    setting HS_FDS_REPORT_REAL_AS_DOUBLE to default of "FALSE"
    setting HS_LONG_PIECE_TRANSFER_SIZE to default of "65536"
    setting HS_SQL_HANDLE_STMT_REUSE to default of "FALSE"
    setting HS_FDS_QUERY_DRIVER to default of "TRUE"
    setting HS_FDS_SUPPORT_STATISTICS to default of "TRUE"
    Parameter HS_FDS_QUOTE_IDENTIFIER is not set
    setting HS_CALL_NAME_ISP to "gtw$:SQLTables;gtw$:SQLColumns;gtw$:SQLPrimaryKeys;gtw$:SQLForeignKeys;gtw$:SQLProcedures;gtw$:SQLStatistics"
    Exiting hgosdip, rc=0
    ORACLE_SID is "plazahost"
    Product-Info:
    Port Rls/Upd:7/0 PrdStat:0
    Agent:Oracle Database Gateway for ODBC
    Facility:hsa
    Class:ODBC, ClassVsn:11.1.0.7.0_0006, Instance:plazahost
    Exiting hgogprd, rc=0
    Entered hgoinit
    HOCXU_COMP_CSET=1
    HOCXU_DRV_CSET=178
    HOCXU_DRV_NCHAR=1000
    HOCXU_DB_CSET=178
    HOCXU_SEM_VER=110000
    Entered hgolofn at 2010/08/04-10:24:19
    Exiting hgolofn, rc=0 at 2010/08/04-10:24:20
    HOSGIP for "HS_OPEN_CURSORS" returned "50"
    HOSGIP for "HS_FDS_FETCH_ROWS" returned "100"
    HOSGIP for "HS_LONG_PIECE_TRANSFER_SIZE" returned "65536"
    HOSGIP for "HS_NLS_NUMERIC_CHARACTER" returned ".,"
    Exiting hgoinit, rc=0 at 2010/08/04-10:24:20
    Entered hgolgon at 2010/08/04-10:24:20
    reco:0, name:moms_oracle, tflag:0
    Entered hgosuec at 2010/08/04-10:24:20
    Exiting hgosuec, rc=0 at 2010/08/04-10:24:20
    HOSGIP for "HS_FDS_RECOVERY_ACCOUNT" returned "RECOVER"
    HOSGIP for "HS_FDS_TRANSACTION_LOG" returned ""HS_TRANSACTION_LOG""
    HOSGIP for "HS_FDS_TIMESTAMP_AS_DATE" returned "TRUE"
    HOSGIP for "HS_FDS_CHARACTER_SEMANTICS" returned "FALSE"
    HOSGIP for "HS_FDS_MAP_NCHAR" returned "TRUE"
    HOSGIP for "HS_FDS_RESULT_SET_SUPPORT" returned "FALSE"
    HOSGIP for "HS_FDS_PROC_IS_FUNC" returned "FALSE"
    HOSGIP for "HS_FDS_REPORT_REAL_AS_DOUBLE" returned "FALSE"
    using moms_oracle as default value for "HS_FDS_DEFAULT_OWNER"
    HOSGIP for "HS_SQL_HANDLE_STMT_REUSE" returned "FALSE"
    Entered hgocont at 2010/08/04-10:24:20
    HS_FDS_CONNECT_INFO = "momsPlazaHost"
    RC=-1 from HOSGIP for "HS_FDS_CONNECT_STRING"
    Entered hgogenconstr at 2010/08/04-10:24:20
    dsn:momsPlazaHost, name:moms_oracle
    optn:
    ##>Connect Parameters (len=43)<##
    ## DSN=momsPlazaHost;
    #! UID=moms_oracle;
    #! PWD=*
    Exiting hgogenconstr, rc=0 at 2010/08/04-10:24:20
    DriverName:myodbc5.dll, DriverVer:05.01.0005
    DBMS Name:MySQL, DBMS Version:5.1.35-community-log
    Exiting hgocont, rc=0 at 2010/08/04-10:24:20
    SQLGetInfo returns Y for SQL_CATALOG_NAME
    SQLGetInfo returns 64 for SQL_MAX_CATALOG_NAME_LEN
    Exiting hgolgon, rc=0 at 2010/08/04-10:24:20
    Entered hgoulcp at 2010/08/04-10:24:20
    Entered hgowlst at 2010/08/04-10:24:20
    Exiting hgowlst, rc=0 at 2010/08/04-10:24:20
    SQLGetInfo returns ` for SQL_IDENTIFIER_QUOTE_CHAR
    SQLGetInfo returns Y for SQL_COLUMN_ALIAS
    2 instance capabilities will be uploaded
    capno:1991, context:0x0001ffff, add-info: 0
    capno:1992, context:0x0001ffff, add-info: 1, translation:"`"
    Exiting hgoulcp, rc=0 at 2010/08/04-10:24:20
    Entered hgouldt at 2010/08/04-10:24:20
    0 instance DD translations were uploaded
    Exiting hgouldt, rc=0 at 2010/08/04-10:24:20
    Entered hgobegn at 2010/08/04-10:24:20
    tflag:0 , initial:1
    hoi:0x12f03c, ttid (len 26) is ...
    00: 4D4F4D53 44422E38 62393537 3032392E [MOMSDB.8b957029.]
    10: 322E3130 2E333131 3531 [2.10.31151]
    tbid (len 23) is ...
    00: 4D4F4D53 44425B32 2E31302E 33313135 [MOMSDB[2.10.3115]
    10: 315D5B31 2E345D [1][1.4]]
    TXN Capable:3, Isolation Option:0xf
    Exiting hgobegn, rc=0 at 2010/08/04-10:24:20
    Entered hgodtab at 2010/08/04-10:24:20
    count:1
    table: T1
    Entered hgopcda at 2010/08/04-10:24:20
    Column:1(id1): dtype:4 (INTEGER), prc/scl:10/0, nullbl:1, octet:0, sign:1, radix:10
    Exiting hgopcda, rc=0 at 2010/08/04-10:24:20
    Entered hgopcda at 2010/08/04-10:24:20
    Column:2(descr1): dtype:12 (VARCHAR), prc/scl:255/0, nullbl:1, octet:255, sign:1, radix:10
    Exiting hgopcda, rc=0 at 2010/08/04-10:24:20
    The hoada for table T1 follows...
    hgodtab, line 651: Printing hoada @ 02A32DDC
    MAX:2, ACTUAL:2, BRC:1, WHT=6 (TABLE_DESCRIBE)
    DTY NULL-OK LEN MAXBUFLEN PR/SC CST IND MOD NAME
    4 INTEGER Y 4 4 0/ 0 0 0 0 id1
    12 VARCHAR Y 255 255 0/ 0 0 0 0 descr1
    Exiting hgodtab, rc=0 at 2010/08/04-10:24:20
    Entered hgodafr, cursor id 0 at 2010/08/04-10:24:20
    Exiting hgodafr, rc=0 at 2010/08/04-10:24:20
    Entered hgotcis at 2010/08/04-10:24:20
    Calling SQLStatistics for T1
    Calling SQLColumns for moms_oracle.T1
    Column "id1": dtype=4, colsize=10, decdig=0, char_octet_length=0, cumulative avg row len=4
    Column "descr1": dtype=12, colsize=255, decdig=0, char_octet_length=255, cumulative avg row len=195
    Exiting hgotcis, rc=0 at 2010/08/04-10:24:20
    Entered hgopars, cursor id 1 at 2010/08/04-10:24:20
    type:0
    SQL text from hgopars, id=1, len=40 ...
    00: 53454C45 43542041 312E6069 6431602C [SELECT A1.`id1`,]
    10: 41312E60 64657363 72316020 46524F4D [A1.`descr1` FROM]
    20: 20605431 60204131 [ `T1` A1]
    Exiting hgopars, rc=0 at 2010/08/04-10:24:20
    Entered hgoopen, cursor id 1 at 2010/08/04-10:24:20
    hgoopen, line 83: NO hoada to print
    Exiting hgoopen, rc=0 at 2010/08/04-10:24:20
    Entered hgodscr, cursor id 1 at 2010/08/04-10:24:20
    Entered hgopcda at 2010/08/04-10:24:20
    Column:1(id1): dtype:4 (INTEGER), prc/scl:10/0, nullbl:1, octet:0, sign:1, radix:0
    Exiting hgopcda, rc=0 at 2010/08/04-10:24:20
    Entered hgopcda at 2010/08/04-10:24:20
    Column:2(descr1): dtype:12 (VARCHAR), prc/scl:255/0, nullbl:1, octet:256, sign:1, radix:0
    Exiting hgopcda, rc=0 at 2010/08/04-10:24:20
    hgodscr, line 506: Printing hoada @ 02A32DDC
    MAX:2, ACTUAL:2, BRC:100, WHT=5 (SELECT_LIST)
    DTY NULL-OK LEN MAXBUFLEN PR/SC CST IND MOD NAME
    4 INTEGER Y 4 4 0/ 0 0 0 0 id1
    12 VARCHAR Y 256 256 0/ 0 0 0 0 descr1
    Exiting hgodscr, rc=0 at 2010/08/04-10:24:21
    Entered hgoftch, cursor id 1 at 2010/08/04-10:24:21
    hgoftch, line 117: Printing hoada @ 02A32DDC
    MAX:2, ACTUAL:2, BRC:100, WHT=5 (SELECT_LIST)
    DTY NULL-OK LEN MAXBUFLEN PR/SC CST IND MOD NAME
    4 INTEGER Y 4 4 0/ 0 0 0 0 id1
    12 VARCHAR Y 256 256 0/ 0 0 0 0 descr1
    SQLBindCol: column 1, cdatatype: -16, bflsz: 4
    SQLBindCol: column 2, cdatatype: 1, bflsz: 257
    2 rows fetched
    Exiting hgoftch, rc=0 at 2010/08/04-10:24:21
    Entered hgoftch, cursor id 1 at 2010/08/04-10:24:21
    hgoftch, line 117: Printing hoada @ 02A32DDC
    MAX:2, ACTUAL:2, BRC:2, WHT=5 (SELECT_LIST)
    DTY NULL-OK LEN MAXBUFLEN PR/SC CST IND MOD NAME
    4 INTEGER Y 4 4 0/ 0 0 0 0 id1
    12 VARCHAR Y 5 256 0/ 0 0 0 0 descr1
    0 rows fetched
    Exiting hgoftch, rc=1403 at 2010/08/04-10:24:21
    Entered hgoclse, cursor id 1 at 2010/08/04-10:24:23
    Exiting hgoclse, rc=0 at 2010/08/04-10:24:23
    Entered hgodafr, cursor id 1 at 2010/08/04-10:24:23
    Exiting hgodafr, rc=0 at 2010/08/04-10:24:23
    Entered hgopars, cursor id 1 at 2010/08/04-10:24:23
    type:0
    SQL text from hgopars, id=1, len=31 ...
    00: 53454C45 43542060 69643160 2C606465 [SELECT `id1`,`de]
    10: 73637231 60204652 4F4D2060 543160 [scr1` FROM `T1`]
    Exiting hgopars, rc=0 at 2010/08/04-10:24:23
    Entered hgoopen, cursor id 1 at 2010/08/04-10:24:23
    hgoopen, line 83: NO hoada to print
    Exiting hgoopen, rc=0 at 2010/08/04-10:24:23
    Entered hgodscr, cursor id 1 at 2010/08/04-10:24:23
    Entered hgopcda at 2010/08/04-10:24:23
    Column:1(id1): dtype:4 (INTEGER), prc/scl:10/0, nullbl:1, octet:0, sign:1, radix:0
    Exiting hgopcda, rc=0 at 2010/08/04-10:24:23
    Entered hgopcda at 2010/08/04-10:24:23
    Column:2(descr1): dtype:12 (VARCHAR), prc/scl:255/0, nullbl:1, octet:256, sign:1, radix:0
    Exiting hgopcda, rc=0 at 2010/08/04-10:24:23
    hgodscr, line 506: Printing hoada @ 02A32DDC
    MAX:2, ACTUAL:2, BRC:100, WHT=5 (SELECT_LIST)
    DTY NULL-OK LEN MAXBUFLEN PR/SC CST IND MOD NAME
    4 INTEGER Y 4 4 0/ 0 0 0 0 id1
    12 VARCHAR Y 256 256 0/ 0 0 0 0 descr1
    Exiting hgodscr, rc=0 at 2010/08/04-10:24:24
    Entered hgoftch, cursor id 1 at 2010/08/04-10:24:24
    hgoftch, line 117: Printing hoada @ 02A32DDC
    MAX:2, ACTUAL:2, BRC:100, WHT=5 (SELECT_LIST)
    DTY NULL-OK LEN MAXBUFLEN PR/SC CST IND MOD NAME
    4 INTEGER Y 4 4 0/ 0 0 0 0 id1
    12 VARCHAR Y 256 256 0/ 0 0 0 0 descr1
    SQLBindCol: column 1, cdatatype: -16, bflsz: 4
    SQLBindCol: column 2, cdatatype: 1, bflsz: 257
    2 rows fetched
    Exiting hgoftch, rc=0 at 2010/08/04-10:24:24
    Entered hgoftch, cursor id 1 at 2010/08/04-10:24:24
    hgoftch, line 117: Printing hoada @ 02A32DDC
    MAX:2, ACTUAL:2, BRC:2, WHT=5 (SELECT_LIST)
    DTY NULL-OK LEN MAXBUFLEN PR/SC CST IND MOD NAME
    4 INTEGER Y 4 4 0/ 0 0 0 0 id1
    12 VARCHAR Y 5 256 0/ 0 0 0 0 descr1
    0 rows fetched
    Exiting hgoftch, rc=1403 at 2010/08/04-10:24:24
    Entered hgoclse, cursor id 1 at 2010/08/04-10:24:27
    Exiting hgoclse, rc=0 at 2010/08/04-10:24:27
    Entered hgodafr, cursor id 1 at 2010/08/04-10:24:27
    Exiting hgodafr, rc=0 at 2010/08/04-10:24:27
    Entered hgocomm at 2010/08/04-10:24:28
    keepinfo:0, tflag:1
    00: 4D4F4D53 44422E38 62393537 3032392E [MOMSDB.8b957029.]
    10: 322E3130 2E333131 3531 [2.10.31151]
    tbid (len 23) is ...
    00: 4D4F4D53 44425B32 2E31302E 33313135 [MOMSDB[2.10.3115]
    10: 315D5B31 2E345D [1][1.4]]
    cmt(0):
    Entered hgocpctx at 2010/08/04-10:24:28
    Exiting hgocpctx, rc=0 at 2010/08/04-10:24:28
    Exiting hgocomm, rc=0 at 2010/08/04-10:24:28
    Entered hgolgof at 2010/08/04-10:24:28
    tflag:1
    Exiting hgolgof, rc=0 at 2010/08/04-10:24:28
    Entered hgoexit at 2010/08/04-10:24:28
    Exiting hgoexit, rc=0 at 2010/08/04-10:24:28

    is null statement is post processed. This means in case of a select ALL records from the remote database are fetched into the Oracle database and the is null statement is then processed locally in the Oracle db.
    So thze select will work as it is handled internally in the Oracle database. This also means as But "is null" isn't sent to the foreign MySQL db the update clause will fail with ORA-02070: database PLAZAHOST does not support IS NULL in this context
    You need to recode the statement or use passthrough statements.

  • How to update the null values to some number on the NUMBER type of column

    Hello All,
    I have one NUMBER type of column in DB table. It has some (null) values. I want to update with value 1. I tried to run the Update statement , It gives 0 rows updated.
    SELECT objectid,attr20 FROM table;
    object id attr20
    ====== ====
    fff70b67-8d54-4ad7-bc57-7b40a0d8b219     (null)
    cac5264a-b363-487b-bfe6-6b84d60064e9     (null)
    2fc2a626-51d8-401c-9495-18aacd4c35c8     (null)
    1b60bfa4-ff68-4488-adf6-2a83528c0e20     (null)
    1c662829-24c1-4b3c-9289-0128e170c043     5
    74f11331-545b-435f-bf4b-f57c7a6b4500     2
    c941c1ac-a18e-47ec-843c-dbe2a5b51001     0
    d7eba203-93c0-48ea-a109-9b06015ef387     0
    eba72fa3-21d8-4489-bb93-917ebbd67de2     0
    I ran following query but no success.
    UPDATE eb_tcsservfnadoc SET attr20 = 1 WHERE attr20 = NULL
    0 rows updated
    UPDATE eb_tcsservfnadoc SET attr20 = 1 WHERE attr20 = null
    0 rows updated
    UPDATE eb_tcsservfnadoc SET attr20 = 1 WHERE attr20 = ''
    0 rows updated
    UPDATE eb_tcsservfnadoc SET attr20 = 1 WHERE attr20 =' '
    Error starting at line 1 in command:
    UPDATE eb_tcsservfnadoc SET attr20 = 1 WHERE attr20 =' '
    Error report:
    SQL Error: ORA-01722: invalid number
    01722. 00000 - "invalid number"
    *Cause:   
    *Action:
    can some one help me out to update such values ????

    Hi,
    "=" will not work for NULL values. Please remeber two NULL values are NOT same. Try IS operator.
    UPDATE eb_tcsservfnadoc SET attr20 = 1 WHERE attr20 IS NULLRegards,
    Avinash

  • Update record to specific value or to null

    Hello.
    We have two tables. Both have the same attribute. Update sentence look if attribute has the same value in both tables. If the value is the same, another attribute is updated to specific value in one table.
    Now i want to update attribute in all records. But if the both tables haven't got the same value, attribute in record should be updated to null.
    For now update looks like:
    update tableA set att1 = att2
    where att3 = value2 and att4 IN (select att4 from tableB where att2 = value2);
    Any idea?
    I hope i explained the problem properly.
    Thanks.

    Like..
    SQL> select * from test1;
    C1         C2
    c1          1
    SQL> select * from test2;
    C1        C22        C33
    c2         11        100
    c1          1        100
    SQL> update test2 t2
      2  set c33 = decode(c22,(select max(c2) from test1 t1 where t1.c1=t2.c11),0,null);
    2 rows updated.
    SQL> select * from test2;
    C1        C22        C33
    c2         11
    c1          1          0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • ExecuteUpdate() returns 1 , but actually it has'nt updated the DB tables

    DATABASE USED : ORACLE 9i
    This is the function that is been called.
    althou, this returns a +ve ans. , saying that the db has been updated ; but when i login into the DB, i donot find the row updated.
    public void process(File dir) throws Exception
         FileInputStream fileIn = null;
         byte b[] = null;
         PreparedStatement stmt = null;
         PreparedStatement stmtBank = null;
         PreparedStatement stmtBrand = null;
         ResultSet rs = null;
         String updateBankInfoTable = "UPDATE ARBANKINFO SET ISSUERLOGO_LARGE = ? WHERE BANKID=?";
         String updateBrandInfoTable = "UPDATE ARBRANDINFO SET ISSUERLOGO_LARGE = ? WHERE BANKID=? and RANGEID = ?";
         int bankId = 0;
         int rangeId = 0;
         // FileNotFoundException or SecurityException might
         // be thrown while reading the files in this dir.
         try{
         fileIn = new FileInputStream(dir);
         }catch(Exception e)
              e.printStackTrace(p);
         String fileNameStr = dir.getName();
         if (fileNameStr!=null || fileNameStr.length()>0)
              // Read the file in a byte array
              long fileLen = dir.length();
              int readBytes = 0;
         int totalRead = 0;
         b = new byte[(int)fileLen];
         while((long)totalRead < fileLen)
         try {
                        readBytes = fileIn.read(b, 0, (int)fileLen);
                   } catch (IOException e1) {
                        e1.printStackTrace(p);
         totalRead += readBytes;
         if (fileIn != null)
         fileIn.close();
         try{
         if (bankIDString!=null)
              stmt = conn.prepareStatement("select BANKID,RANGEID from ARESENROLLPROCESS where MAINLOGOURL = ?" +
                   "and BANKID IN ("+bankIDString+")");
         else
              stmt = conn.prepareStatement("select BANKID,RANGEID from ARESENROLLPROCESS where MAINLOGOURL = ?");
         stmt.setString(1,fileNameStr);
         rs = stmt.executeQuery();
         int i =1;
         while (rs.next())
              bankId = rs.getInt("BANKID");
                   rangeId = rs.getInt("RANGEID");
                   i++;
                   if (rangeId!=0)
                        stmtBrand = conn.prepareStatement(updateBrandInfoTable);
                        stmtBrand.setBytes(1,b);
                        stmtBrand.setInt(2,bankId);
                        stmtBrand.setInt(3,rangeId);
                        if (stmtBrand.executeUpdate()==1)
                                                 p.println("Updated ARBRANDINFO table ");
                        else
                             // log in something
                                                 p.println("*** Column not found in ARBRANDINFO table");
                   else if (rangeId == 0)
                        stmtBank = conn.prepareStatement(updateBankInfoTable);
                        stmtBank.setBytes(1,b);
                        stmtBank.setInt(2,bankId);
                        if (stmtBank.executeUpdate()==1)
                                                 p.println("Updated ARBANKINFO table");
                        else
                                                 p.println("*** Column not found in ARBANKINFO table : " +
                                       "BANKID--> "+bankId);
                   if (stmtBank != null)
                   stmtBank.close();
              if (stmtBrand != null)
                   stmtBrand.close();
         }catch(Exception e)
              e.printStackTrace(p);
         if (stmt != null)
              stmt.close();
         if (stmtBank != null)
              stmtBank.close();
         if (stmtBrand != null)
              stmtBrand.close();
    Any suggestions ?????

    i don't see how not setting the autoCommit parameter
    has anything to do with this.If autocommit is false then an update will not be committed without an explicit commit()!
    >
    I would like to add one more thing in here, which m
    sorry i shud hav added; this particluar fn. does
    update a lot of row; but for some records, althou it
    does say that it has updated(java API ); but in
    reality it does not do it.
    That makes a lot fo difference! It does mean that it is probably not a commit problem but without this extra information my money was on a commit problem. Are you swallowing an exception without reporting it?

  • How to retrieve a SQL query (in String format) from a PreparedStatement

    Hello all,
    I am in the process of unit testing an application accessing a Oracle 9i 9.2 RDBMS server with JDBC.
    My query is:
    As I have access to PreparedStatement and CallableStatement Java objets but not to the source queries which help create those objects?
    Is thtere a simple way by using an API, to retrieve the SQL command (with possible ? as placeholders for parameters).
    I have already looked at the API documentation for those two objets (and for the Statement and ResultSetmetaData objects too) but to no avail.
    Thank you for any help on this issue,
    Best regards,
    Benoît

    Sorry for having wasted your time... and for not understanding what you meant in your first reply.
    But the codlet was only to show the main idea:
    Here is the code which compiles OK for this approach to reach its intended goal:
    main class (file TestSuiteClass.java):
    import java.sql.*;
    import static java.lang.Class.*;
    * Created by IntelliJ IDEA.
    * User: bgilon
    * Date: 15/03/12
    * Time: 10:05
    * To change this template use File | Settings | File Templates.
    public class TestSuiteClass {
    public static void main(final String[] args) throws Exception {
    // Class.forName("oracle.jdbc.OracleDriver");
    final Connection mconn= new mConnection(
    DriverManager.getConnection("jdbc:oracle:thin:scott/tiger@host:port:service"));
    * final Statement lstmt= TestedClass.TestedMethod(mconn, ...);
    * final String SqlSrc= mconn.getSqlSrc(lstmt).toUpperCase(), SqlTypedReq= mconn.getTypReq(lstmt);
    * assertEquals("test 1", "UPDATE IZ_PD SET FIELD1= ? WHERE FIELDPK= ?", SqlSrc);
    Proxy class (file mConnector.java):
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    * Created by IntelliJ IDEA.
    * User: bgilon
    * Date: 15/03/12
    * Time: 10:05
    * To change this template use File | Settings | File Templates.
    * This file should be compiled with JDK 1.6, but can be used with previous JDK versions.
    * See OKwith1pN booleans usage for not throwing Exceptions as Unknown methods by the conn object...
    public final class mConnection implements Connection {
    private final Connection conn;
    private final List<Statement> Stmts= new ArrayList<Statement>();
    private final List<String> SqlSrcs= new ArrayList<String>();
    private final List<Integer> TypSrcs= new ArrayList<Integer>();
    private final static String jvmv= System.getProperty("java.specification.version");
    private static final boolean OKwith1p2;
    private static final boolean OKwith1p4; /* OKwith1p5, */
    private static final boolean OKwith1p6;
    static {
    /* jvmv= System.getProperty("java.version");
    System.out.println("jvmv = " + jvmv);
    jvmv= System.getProperty("java.vm.version");
    System.out.println("jvmv = " + jvmv); */
    System.out.println("jvmv = " + jvmv);
    OKwith1p2= (jvmv.compareTo("1.2") >= 0);
    OKwith1p4= (jvmv.compareTo("1.4") >= 0);
    // OKwith1p5= (jvmv.compareTo("1.5") >= 0);
    OKwith1p6= (jvmv.compareTo("1.6") >= 0);
    public String getSqlSrc(final Statement pstmt) {
    int ix= 0;
    for(Statement stmt : this.Stmts) {
    if(stmt == pstmt) return SqlSrcs.get(ix);
    ix+= 1;
    return null;
    static private final String[] TypeNames= new String[] { "Statement", "PreparedStatement", "CallableStatement" };
    public String getTypReq(final Statement pstmt) {
    int ix= 0;
    for(Statement stmt : this.Stmts) {
    if(stmt == pstmt) return TypeNames[TypSrcs.get(ix)];
    ix+= 1;
    return null;
    private void storedStatement(
    final Statement stmt,
    final String sqlSrc,
    final Integer typReq
    Stmts.add(stmt);
    SqlSrcs.add(sqlSrc);
    TypSrcs.add(typReq);
    public Connection getDecoratedConn() {
    return conn;
    mConnection(final Connection pconn) {
    this.conn= pconn;
    public boolean isClosed() throws SQLException {
    return conn.isClosed();
    public void rollback(Savepoint savepoint) throws SQLException {
    if(OKwith1p4) conn.rollback(savepoint);
    public boolean isReadOnly() throws SQLException {
    return conn.isReadOnly();
    public int getTransactionIsolation() throws SQLException {
    return conn.getTransactionIsolation();
    public void setTransactionIsolation(int level)throws SQLException {
    conn.setTransactionIsolation(level);
    public Properties getClientInfo() throws SQLException {
    return OKwith1p6 ? conn.getClientInfo() : null;
    public <T> T unwrap(Class<T> iface)
    throws SQLException {
    return conn.unwrap(iface);
    public void setAutoCommit(boolean auto) throws SQLException {
    conn.setAutoCommit(auto);
    public boolean getAutoCommit() throws SQLException {
    return conn.getAutoCommit();
    public Map<String,Class<?>> getTypeMap() throws SQLException {
    if(!OKwith1p2) return null;
    return conn.getTypeMap();
    public void setTypeMap(Map<String,Class<?>> map) throws SQLException {
    if(!OKwith1p2) return;
    conn.setTypeMap(map);
    public void setHoldability(final int holdability) throws SQLException {
    if(OKwith1p4) conn.setHoldability(holdability);
    public Struct createStruct(String typeName, Object[] attributes) throws SQLException {
    return conn.createStruct(typeName, attributes);
    public void commit() throws SQLException {
    conn.commit();
    public void rollback() throws SQLException {
    conn.rollback();
    public boolean isValid(int timeout) throws SQLException {
    return OKwith1p6 && conn.isValid(timeout);
    public void clearWarnings() throws SQLException {
    conn.clearWarnings();
    public int getHoldability() throws SQLException {
    if(!OKwith1p4) return -1;
    return conn.getHoldability();
    public Statement createStatement() throws SQLException {
    return conn.createStatement();
    public PreparedStatement prepareStatement(final String SqlSrc) throws SQLException {
    if(!OKwith1p2) return null;
    final PreparedStatement lstmt= conn.prepareStatement(SqlSrc);
    storedStatement(lstmt, SqlSrc, 1);
    return lstmt;
    public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
    if(!OKwith1p4) return null;
    final PreparedStatement lstmt= conn.prepareStatement(sql, columnNames);
    storedStatement(lstmt, sql, 1);
    return lstmt;
    public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
    final PreparedStatement lstmt= conn.prepareStatement(sql, resultSetType, resultSetConcurrency);
    storedStatement(lstmt, sql, 1);
    return lstmt;
    public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
    final PreparedStatement lstmt= conn.prepareStatement(sql, columnIndexes);
    storedStatement(lstmt, sql, 1);
    return lstmt;
    public void setClientInfo(String name, String value) throws SQLClientInfoException {
    if(OKwith1p6)
    conn.setClientInfo(name, value);
    public PreparedStatement prepareStatement(final String SqlSrc,
    int resultType,
    int resultSetCurrency,
    int resultSetHoldability) throws SQLException {
    final PreparedStatement lstmt= conn.prepareStatement(SqlSrc, resultType, resultSetCurrency);
    storedStatement(lstmt, SqlSrc, 1);
    return lstmt;
    public PreparedStatement prepareStatement(final String SqlSrc,
    int autogeneratedkeys) throws SQLException {
    if(!OKwith1p4) return null;
    final PreparedStatement lstmt= conn.prepareStatement(SqlSrc, autogeneratedkeys);
    storedStatement(lstmt, SqlSrc, 1);
    return lstmt;
    public CallableStatement prepareCall(final String SqlSrc) throws SQLException {
    final CallableStatement lstmt= conn.prepareCall(SqlSrc);
    storedStatement(lstmt, SqlSrc, 2);
    return lstmt;
    public CallableStatement prepareCall(final String SqlSrc,
    int resultType,
    int resultSetCurrency,
    int resultSetHoldability) throws SQLException {
    if(!OKwith1p4) return null;
    final CallableStatement lstmt= conn.prepareCall(SqlSrc, resultType, resultSetCurrency, resultSetHoldability);
    storedStatement(lstmt, SqlSrc, 2);
    return lstmt;
    public Array createArrayOf(String typeName, Object[] elements) throws SQLException {
    return OKwith1p6 ? conn.createArrayOf(typeName, elements) : null;
    public CallableStatement prepareCall(final String SqlSrc,
    int resultType,
    int resultSetCurrency) throws SQLException {
    if (!OKwith1p2) return null;
    final CallableStatement lstmt= conn.prepareCall(SqlSrc, resultType, resultSetCurrency);
    storedStatement(lstmt, SqlSrc, 2);
    return lstmt;
    public SQLXML createSQLXML() throws SQLException {
    return OKwith1p6 ? conn.createSQLXML() : null;
    public DatabaseMetaData getMetaData() throws SQLException {
    return conn.getMetaData();
    public String getCatalog() throws SQLException {
    return conn.getCatalog();
    public void setCatalog(final String str) throws SQLException {
    conn.setCatalog(str);
    public void setReadOnly(final boolean readonly) throws SQLException {
    conn.setReadOnly(readonly);
    public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
    return conn.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability);
    public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException {
    if(!OKwith1p2) return null;
    return conn.createStatement(resultSetType, resultSetConcurrency);
    public String nativeSQL(final String sql) throws SQLException {
    return conn.nativeSQL(sql);
    public void     releaseSavepoint(Savepoint savepoint) throws SQLException {
    if(OKwith1p4) conn.releaseSavepoint(savepoint);
    public Savepoint setSavepoint() throws SQLException {
    return OKwith1p4 ? conn.setSavepoint() : null;
    public Savepoint setSavepoint(final String str) throws SQLException {
    return OKwith1p4 ? conn.setSavepoint(str) : null;
    public boolean isWrapperFor(Class iface) throws SQLException {
    return conn.isWrapperFor(iface);
    public String getClientInfo(final String str) throws SQLException {
    return OKwith1p6 ? conn.getClientInfo(str) : null;
    public void setClientInfo(final Properties pro) throws SQLClientInfoException {
    if (OKwith1p6) conn.setClientInfo(pro);
    public Blob createBlob() throws SQLException {
    return OKwith1p6 ? conn.createBlob() : null;
    public Clob createClob() throws SQLException {
    return OKwith1p6 ? conn.createClob() : null;
    public NClob createNClob() throws SQLException {
    return OKwith1p6 ? conn.createNClob() : null;
    public SQLWarning getWarnings() throws SQLException {
    return conn.getWarnings();
    public void close() throws SQLException {
    conn.close();
    Final word:
    The final word about this is: there is currently three ways to obtain source SQL queries from compiled statement objects.
    a) Use a proxy class the mConnector above;
    b) Use a proxy JDBC driver as Log4JDBC;
    c) Use the trace facility of the driver (however, post analyzing the logs would depend upon the driver selected).
    Thank you for reading,
    Benoît

  • How To Update A Record?  What is Wrong With My Code?

    I tried to update a record and got the
    java.lang.ArrayIndexOutOfBoundsException: 0
    Here is my code:
       public void updateLastPostMemberName(int threadID, // primary key
                                            String lastPostMemberName)
                                            throws ObjectNotFoundException, MessageDAOSysException
          Connection conn = null;
          PreparedStatement stmt = null;
          String sql = "UPDATE message_thread SET last_post_member_name = '" + lastPostMemberName + "' WHERE thread_id = '" + threadID + "'";
          try
             conn = DBConnection.getDBConnection();
             stmt = conn.prepareStatement( sql );
             stmt.setString( 1, lastPostMemberName ); // this is the statement where the error occurred.
             stmt.executeUpdate();
          catch( SQLException se )
             System.out.println( se.getMessage() );
             se.printStackTrace();
             throw new MessageDAOSysException( "Error executing SQL in ThreadHandler.updateLastPostMemberName." );
          finally
             if ( conn != null )
                try
                   stmt.close();
                   stmt = null;
                   conn.close();
                catch( SQLException sqlEx )
                   System.out.println( "Problem occurs while closing " + sqlEx );
                conn = null;
       }

    Natalie,
    try this...
    public void updateLastPostMemberName(int threadID, // primary key
                                          String lastPostMemberName) throws ObjectNotFoundException,
                                                                       MessageDAOSysException {
      Connection conn = null;
      PreparedStatement stmt = null;
      String sql = "UPDATE message_thread SET last_post_member_name = ? WHERE thread_id = ?";
      try {
        conn = DBConnection.getDBConnection();
        stmt = conn.prepareStatement( sql );
        stmt.setString( 1, lastPostMemberName );
        stmt.setInt(2, threadID);
        stmt.executeUpdate();
      catch( SQLException se ) {
        System.out.println( se.getMessage() );
        se.printStackTrace();
        throw new MessageDAOSysException(
    "Error executing SQL in ThreadHandler.updateLastPostMemberName." );
      finally {
        if ( conn != null ) {
          try {
            stmt.close();
            stmt = null;
            conn.close();
          catch( SQLException sqlEx ) {
            System.out.println( "Problem occurs while closing " + sqlEx );
          conn = null;
    }Good Luck,
    Avi.

  • Problem in updation

    I have a jsp page named security.jsp. my problem is that the below code is not working.
    This page shown all the values of database, and there is a update button, after clicking that we can modify rows of the table.
    <html>
    <body>
    <table>
    <tr>
    <td>
    <%@ page import="javax.servlet.*" %>
    <%@ page import="javax.servlet.http.*" %>
    <%@ page language="java" import="java.sql.*" %>
    <%
    try {
    DateFormat format = new SImpleDateFormat("dd/MM/yyyy");
    format.setLenient(false);
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn=DriverManager.getConnection("jdbc:odbc:pf","scott","ttlscott");
    System.out.println("got connection");
    %>
    <%
    String action = request.getParameter("action");
    // Check if an update is requested
    if (action != null && action.equals("update")) {
    conn.setAutoCommit(false);
    PreparedStatement pstatement = conn.prepareStatement(
    "UPDATE sec_mast SET sec_no=? , catg_code=?, face_val=?, pur_val=?, int_paid=?, int_recd=?, brkr=?, vou_no=?, vou_date=?, vou_amt=?, due_date1=?, due_date2=?, lf_no=?, mat_date=? where tot_val=? ");
    pstatement.setInt(1,Integer.parseInt(request.getParameter("sec_no")));
    pstatement.setInt(2,Integer.parseInt(request.getParameter("catg_code")));
    pstatement.setInt(3,Integer.parseInt(request.getParameter("face_val")));
    pstatement.setInt(4,Integer.parseInt(request.getParameter("pur_val")));
    pstatement.setInt(5,Integer.parseInt(request.getParameter("int_paid")));
    pstatement.setInt(6,Integer.parseInt(request.getParameter("int_recd")));
    pstatement.setInt(7,Integer.parseInt(request.getParameter("brkr")));
    pstatement.setString(8,request.getParameter("vou_no"));
    java.util.Date vouDate = format.parse(request.getParameter("vou_date"));
    pstatement.setDate(9, new java.sql.Date(vouDate.getTime()));
    pstatement.setInt(10,Integer.parseInt(request.getParameter("vou_amt")));
    java.util.Date DueDate1 = format.parse(request.getParameter("due_date1"));
    pstatement.setDate(11, new java.sql.Date(DueDate1.getTime()));
    java.util.Date DueDate2 = format.parse(request.getParameter("due_date2"));
    pstatement.setDate(12, new java.sql.Date(DueDate2.getTime()));
    pstatement.setString(13,request.getParameter("lf_no"));
    java.util.Date Matur_Date = format.parse(request.getParameter("mat_date"));
    pstatement.setDate(14, new java.sql.Date(Matur_Date.getTime()));
    pstatement.setInt(15,Integer.parseInt(request.getParameter("tot_val")));
    int rowCount = pstatement.executeUpdate();
    conn.setAutoCommit(false);
    conn.setAutoCommit(true);
    %>
    <%
    // Create the statement
    Statement statement = conn.createStatement();
    ResultSet rs = statement.executeQuery
    ("SELECT * from sec_mast ");
    %>
    <%
    // Iterate over the ResultSet
    while ( rs.next() ) {
    %>
    <tr>
    <form action="security_update.jsp" method="get">
    <input type="hidden" value="update" name="action">
    <td><input value="<%= rs.getInt("sec_no") %>" name="sec_no"></td>
    <td><input value="<%= rs.getInt("catg_code") %>" name="catg_code"></td>
    <td><input value="<%= rs.getInt("face_val") %>" name="face_val"></td>
    <td><input value="<%= rs.getInt("pur_val") %>" name="pur_val"></td>
    <td><input value="<%= rs.getInt("int_paid") %>" name="int_paid"></td>
    <td><input value="<%= rs.getInt("int_recd") %>" name="int_recd"></td>
    <td><input value="<%= rs.getInt("brkr") %>" name="brkr"></td>
    <td><input value="<%= rs.getInt("tot_val") %>" name="tot_val"></td>
    <td><input value="<%= rs.getString("vou_no") %>" name="vou_no"></td>
    <td><input value="<%= rs.getDate("vou_date") %>" name="vou_date"></td>
    <td><input value="<%= rs.getInt("vou_amt") %>" name="vou_amt"></td>
    <td><input value="<%= rs.getDate("due_date1") %>" name="due_date1"></td>
    <td><input value="<%= rs.getDate("due_date2") %>" name="due_date2"></td>
    <td><input value="<%= rs.getString("lf_no") %>" name="lf_no"></td>
    <td><input value="<%= rs.getDate("mat_date") %>" name="mat_date"></td>
    <td><input type="submit" value="Update"></td>
    </form>
    </tr>
    <%
    %>
    </table>
    <%
    // Close the ResultSet
    rs.close();
    // Close the Statement
    statement.close();
    // Close the Connection
    conn.close();
    }catch(ParseException e) {
    out.println("do date format error action.<br>");
    } catch (SQLException sqle) {
    out.println(sqle.getMessage());
    } catch (Exception e) {
    out.println(e.getMessage());
    %>
    </td>
    </tr>
    </body>
    </html>
    error shown is as :
    HTTP Status 500 -
    type Exception report
    message
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception
    org.apache.jasper.JasperException: Unable to compile class for JSP
    An error occurred at line: 18 in the jsp file: /security_master/security_update.jsp
    Generated servlet error:
    D:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\abhi\org\apache\jsp\security_005fmaster\security_005fupdate_jsp.java:65: cannot find symbol
    symbol : class DateFormat
    location: class org.apache.jsp.security_005fmaster.security_005fupdate_jsp
    DateFormat format = new SImpleDateFormat("dd/MM/yyyy");
    ^
    An error occurred at line: 18 in the jsp file: /security_master/security_update.jsp
    Generated servlet error:
    D:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\abhi\org\apache\jsp\security_005fmaster\security_005fupdate_jsp.java:65: cannot find symbol
    symbol : class SImpleDateFormat
    location: class org.apache.jsp.security_005fmaster.security_005fupdate_jsp
    DateFormat format = new SImpleDateFormat("dd/MM/yyyy");
    ^
    An error occurred at line: 127 in the jsp file: /security_master/security_update.jsp
    Generated servlet error:
    D:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\abhi\org\apache\jsp\security_005fmaster\security_005fupdate_jsp.java:217: cannot find symbol
    symbol : class ParseException
    location: class org.apache.jsp.security_005fmaster.security_005fupdate_jsp
    }catch(ParseException e) {
    ^
    3 errors
         org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
         org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
         org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
         org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
         org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
         org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
         org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
    Apache Tomcat/5.0.28

    One problem is that you misspelled "SimpleDateFormat". You seemed to make the "i" upper case: "SImpleDateFormat".

  • PreparedStatement.executeBatch() and BatchUpdateException

    Hi,
    I am using PreparedStatement's executeBatch() method to make batch operations,
    for such a scenario is there a way to continue the operation 3 and 4 when the operation 2 fails?
    operation 1 (will succeed alone)
    operation 2 (will fail alone)
    operation 3 (will succeed alone)
    operation 4 (will succeed alone)

    Hi, I've already looked the link you've sent.
    Let me give more detail about the result of my scenario.
    The first two successfull insert operations really updates the database which is Oracle.
    But it seems the failed 3rd operation prevents the operation 4 to update database.
    My code is something like that:
    int[] updateCounts = null;
    try {
    PreparedStatement stmtInsert = conn.prepareStatement("insert sql");
    for (int i=0; i <SOMEVALUE; i++)
         stmtInsert.setString(1, SOMEVALUE);
         stmtInsert.setString(2, SOMEVALUE);
         stmtInsert.addBatch();
    int[] counts = stmtInsert.executeBatch();
    } catch (BatchUpdateException e)
    updateCounts = e.getUpdateCounts();
    checkUpdateCounts(updateCounts);
    finally {
    conn.close();
    public static void checkUpdateCounts(int[] updateCounts) {
    for (int i = 0; i < updateCounts.length; i++) {
    if (updateCounts[i] == Statement.SUCCESS_NO_INFO) {
    // Successfully executed; number of affected rows not available
    System.out.println("Statement.SUCCESS_NO_INFO");
    } else if (updateCounts[i] == Statement.EXECUTE_FAILED) {
    System.out.println("Statement.EXECUTE_FAILED");
    The results are pretty confusing, as I said first two operations updates the db, but fourth is did not.
    But system out says:
    Statement.EXECUTE_FAILED
    Statement.EXECUTE_FAILED
    Statement.EXECUTE_FAILED
    Statement.EXECUTE_FAILED
    I would expect something like that:
    Statement.SUCCESS_NO_INFO");
    Statement.SUCCESS_NO_INFO");
    Statement.EXECUTE_FAILED
    Statement.EXECUTE_FAILED
    or even better (assuming operation 4 updated the db)
    Statement.SUCCESS_NO_INFO");
    Statement.SUCCESS_NO_INFO");
    Statement.EXECUTE_FAILED
    Statement.SUCCESS_NO_INFO");
    Since the size of the int array that the e.getUpdateCounts() is 4 which is also equal of the batch operations' size, I assume that the driver continues to process the commands in the batch after a BatchUpdateException is thrown.
    I am totally confused, can anybody comment these results? Is there a way to succeed the fourth operation?

  • Updating a table via a gui program

    i am trying to update a record via the UPDATE function. My program has a show all button that brings in all the records. When i make a change in the record and click Update. I get the error: Syntax error in string in query expression ''00000' the zeroes represent an updated zipcode. Here is my source code for the update function:
    if(e.getActionCommand().equals("Update"))
    String url = "jdbc:odbc:coffee";
    String driver= "sun.jdbc.odbc.JdbcOdbcDriver";
    Connection con= null;
    Statement stmt =null;
    //PreparedStatement stmt = null;
    ResultSet my_result= null;
    /* String query = "Update CoffeeSuppliers set " +
    "Name='" + comp_Name.getText() +
    "', Address='" + comp_Addr.getText() +
    "', City ='" + comp_City.getText() +
    "', State='" + comp_State.getText() +
    "', ZipCode='" comp_zipcode.getText()
    "' WHERE ID=" + comp_ID.getText();
    String query= "Update CoffeeSuppliers set " +
    "ID='" + comp_ID.getText() +
    "', Name='" + comp_Name.getText() +
    "', Address='" + comp_Addr.getText() +
    "', City='" + comp_City.getText() +
    "', State='" + comp_State.getText() +
    "', ZipCode='" + comp_zipcode.getText();
    try
    Class.forName(driver);
    catch(java.lang.ClassNotFoundException exception)
    System.err.print("ClassNotFoundException: ");
    System.err.println(exception.getMessage());
    try
    con = DriverManager.getConnection(url,"app","app");
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    my_result= stmt.executeQuery(query);
    stmt.executeUpdate(query);
    while(my_result.next())
    System.out.println("am i in the while loop");
    my_result.updateString(1,comp_ID.getText());
    my_result.updateString(2,comp_Name.getText());
    my_result.updateString(3,comp_Addr.getText());
    my_result.updateString(4,comp_City.getText());
    my_result.updateString(5,comp_State.getText());
    my_result.updateString(6,comp_zipcode.getText());
    my_result.updateRow();
    stmt.close();
    con.close();
    catch(SQLException sqlex)
    System.err.println("ERROR: " + sqlex.getMessage());
    } //end of the if statement
    Any feedback will be great.
    thanks

    String query= "Update CoffeeSuppliers set " +
    "ID='" + comp_ID.getText() +
    "', Name='" + comp_Name.getText() +
    "', Address='" + comp_Addr.getText() +
    "', City='" + comp_City.getText() +
    "', State='" + comp_State.getText() +
    "', ZipCode='" + comp_zipcode.getText() + "'";I think that it is as simple as the fact that you diddn't close the zipcode string literal being passed to the SQL interpreter. Add the closing ' to the query
    Hope this helps,
    Bamkin

  • Pass variables and return ResultSet from same preparedStatement

    I am passing "fp" and "week_no" to a preparedStament in a class and want to return the values to my jsp page. "fp" and "week_no" are used twice. Please see below. When I run it, I get no error messages but, it doesn't display any data.
    I have the following code in a class:
    public ResultSet getHistory(String fp, String week_no)
                        throws SQLException, Exception {
    ResultSet rs = null;
    if (con != null) {
    try {
         PreparedStatement getHist;
         getHist = con.prepareStatement(
         "SELECT sbu, TO_CHAR(((sum_dollar) + (adj_sum_dollar)),'$999,999,999.99') AS sum_dollar, TO_CHAR(actual_date,'MM/DD/YY') AS actual_date, " +
         "((sum_cases) + (adj_sum_cases)) AS sum_cases, " +
         "((new_order_cases) + (adj_new_order_cases)) AS new_order_cases, " +
         "((total_open_orders) + (adj_total_open_orders)) AS total_open_orders, " +
         "((back_orders) + (adj_back_orders)) AS back_orders, " +
         "TO_CHAR((sum_dollar/sum_cases), '999.99') AS yield " +
         "FROM SUMMARY " +
         "WHERE actual_date BETWEEN (SELECT begin_dt " +
                   "FROM fiscal_calendar " +
                             "WHERE fiscal_period = '?' " +
                             "AND week_number = '?' " +
                             "AND week_number <> '9' " +
                             "AND fiscal_yr = '2003') " +
                        "AND " +
                             "(SELECT end_dt " +
                        "FROM fiscal_calendar " +
                             "WHERE fiscal_period = '?' " +
                             "AND week_number = '?' " +
                             "AND week_number <> '9' " +
                             "AND fiscal_yr = '2003') " +
              "ORDER BY actual_date, sbu ");
         getHist.setString(1, fp);
         getHist.setString(2, week_no);
         getHist.setString(3, fp);
         getHist.setString(4, week_no);
         rs = getHist.executeQuery();
         } catch (SQLException sqle) {
    error = "SQLException: Update failed, possible duplicate entry.";
         throw new SQLException(error);
    } else {
    error = "Exception: Connection to the database was lost.";
         throw new Exception(error);
    return rs;
    This is in my jsp:
    <%
    String fp = request.getParameter("fp");
    String week_no = request.getParameter("week_no");
    historyInfo.connect();
    ResultSet rs = historyInfo.getHistory(fp, week_no);
    while (rs.next()) {
    //String sum_dollar = rs.getString("sum_dollar");
    %>
    <%= rs.getString("sum_dollar") %>
    <%
    %>

    Hi,
    First thing U can't do this way in java. If U are executing this sort of database query, after retriving all the values, put inside Haahtable or HashMap as the application required and return it.
    Otherwise execute this query at the same place where u r printing values in jsp page insted of writing it inside seperate method..It will work.
    If still it's not workimg, please let me know.
    Rajeh Pal

Maybe you are looking for

  • My Macbook seems to be having serious issues...

    So i have had my Macbook Pro (mid 2012)  roughly 18 months now, with absolutely no issues. For the last 8-9 months i have been using an unofficial charger for it, not cheap and tacky....but not as expensive as the apple ones. I went to bed last night

  • Copy data directly from service order to sales quotation

    I know the process to create the sales quotation from service order in customer interaction center but my query is that is there a way that data should be directly copied from the service notification to the service order to the quotation because I h

  • Itunes and Conflicts with AIM

    *Notes: I have itunes 7.0 and an old version of AIM (because I absolutely hate the new, ad covered version - Triton, or whatever it's called) I was listening to itunes with AIM open and running, and everything was fine. The moment someone IMed me, my

  • How to Catch Return Code(RFC) in  XI

    Hi Can any help me out, I have a scenario , which is posting the data into SAPR/3 through RFC and alternately I would like to catch the exceptions . I need to catch return code in my scenrio, which will be show successfully posted or not as E or U. M

  • Transport library not found: dt_socket

    I'm a JBoss newbie trying to use to start jboss 4.0.3 on Fedora Core 4 with java 1.5.0_05 in debug mode. Following the instructions found here: http://java.sys-con.com/read/44918.htm, I modified the the jboss startup script run.sh by adding the line