db-torque-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sudhakar Pandey (JIRA)" <j...@apache.org>
Subject [jira] Created: (TORQUE-53) Inserting wrong data if data type is Double and 0(zero) is the last digit
Date Fri, 18 Aug 2006 15:02:14 GMT
Inserting wrong data if data type is Double and 0(zero) is the last digit
-------------------------------------------------------------------------

                 Key: TORQUE-53
                 URL: http://issues.apache.org/jira/browse/TORQUE-53
             Project: Torque
          Issue Type: Bug
    Affects Versions: 3.2
         Environment: Windows NT
            Reporter: Sudhakar Pandey


Problem: Torque is inserting wrong data in the database for Double type. 

Database description
~~~~~~~~~~~~~~~~~
Database: Oracle 10g
Oracle JDBC version: 10.2.0.1.0
Table Name: Bank_Account
Column Name: Current_Balance
Column dataType: NUMBER(15,4)

When I am trying to enter a value new Double(1234567890) it insert/update 12.3456 in the database.
This happens only if the number of digits are more than 7 and last digit is 0(zero).

I have tried updating using directly PreparedStatement and it just worked fine. Problem comes
only with Torque.

Following is the program I have used for varification:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<Code>
............
	public static void main(String argv[]) {
		TorqueInitializer.init();
		Connection db_connection = null;

		db_connection = Common.getConnection();
		
		if (db_connection == null) {
			System.out.println("Unable to get dbConnection");
		}
		
		try {
			BankAccount bankAccount = showCurrentBalance(db_connection);
			long value = 12345l;
			for (int i = 5; i < 11; i++, value = ((value * 10) + i)) {
				System.out.println("Value=" + value);		
				System.out.print("<Before update> ");
				bankAccount = showCurrentBalance(db_connection);
				
				if (updateUsingPrepStat)
					updateCurrentBalanceUsingPStat(db_connection, new Double(
							value * 10));
				else
					updateCurrentBalanceUsingTorque(bankAccount, db_connection,
							new Double(value * 10));
				System.out.print("<After update> ");
				bankAccount = showCurrentBalance(db_connection);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			
			if (db_connection != null)
				try {
					db_connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
	}
	
	public static BankAccount showCurrentBalance(Connection db_connection) {
		try {
			Criteria c = new Criteria();
			c.add(BankAccountPeer.BANK_ACCOUNT_ID, new Long(1523764));
			List list = BankAccountPeer.doSelect(c, db_connection);
			BankAccount bankAccount = (BankAccount) list.get(0);
			System.out.println("Current account balance: "
					+ bankAccount.getCurrentBalance());
			return bankAccount;
		} catch (TorqueException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public static void updateCurrentBalanceUsingTorque(BankAccount bankAccount,
			Connection db_connection, Double value) throws Exception {
		bankAccount.setCurrentBalance(value);
		bankAccount.save(db_connection, "ibdv70");
	}
............
</Code

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org


Mime
View raw message