473,385 Members | 1,798 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

IBM JDBC driver behaves differently on Linux than on Solaris

Hi. Below is a simple JDBC program to insert and extract
a numerical value. When ResultSet.getDouble() is called,
the same program produces different output on solaris
than it does on Linux. I would be grateful for any
discussion of this!
thanks,
Joe Weinstein at BEA Systems

Results on Linux Box
-----------------------------------------------------------------------
-bash-2.05b$ java db2
08.02.0001
Database version is 08.02.0000
Testing value 1.001
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.0010000000000001 <<<<<<<<<< SEE THIS!
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.0010000000000001 <<<<<<<<<< SEE THIS!
double d = 1.001d gives 1.001
new Double("1.001").doubleValue() gives 1.001
they are equal.
new BigDecimal(1.001d) gives 1.000999999999999889865875957184471189975738525390 6
25
new BigDecimal( new Double("1.001").doubleValue() ) gives 1.000999999999999889865875957184471189975738525390 625
Results on Solaris Box
---------------------------------------------------------------------------
bash-3.00$java db2
08.02.0002
Database version is 08.02.0000
Testing value 1.001
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.001 <<<<<<<<<< DIFFERENT!
native driver object is a class java.math.BigDecimal
value is 1.001 <<<<<<<<<< DIFFERENT!
as getDouble it's 1.001
double d = 1.001d gives 1.001
new Double("1.001").doubleValue() gives 1.001
they are equal.
new BigDecimal(1.001d) gives 1.000999999999999889865875957184471189975738525390 625
new BigDecimal( new Double("1.001").doubleValue() ) gives 1.000999999999999889865875957184471189975738525390 625

The program:

------------------------------------------------------------------------------------------
import java.io.*;
import java.util.*;
import java.net.*;
import java.sql.*;

import weblogic.common.*;

public class db2
{
public static void main(String argv[])
throws Exception
{
Connection c = null;
try
{

java.util.Properties props = new java.util.Properties();
Driver d = (Driver)Class.forName("COM.ibm.db2.jdbc.app.DB2Dri ver").newInstance();
props.put("user", "wls");
props.put("password", "wls");
props.put("DatabaseName", "wls");
String URL = "jdbc:db2:wls1";

c = d.connect(URL, props);

DatabaseMetaData dm = c.getMetaData();
System.out.println(dm.getDriverVersion());
System.out.println("Database version is " + dm.getDatabaseProductVersion() );

Statement s = c.createStatement();
try{s.executeUpdate("drop table joe");}catch (Exception ignore){}
s.executeUpdate("create table joe (bar decimal(4,3))");
s.executeUpdate("insert into joe values(1.001)");
PreparedStatement p = c.prepareStatement("insert into joe values(?)");
p.setDouble(1, new Double("1.001").doubleValue());
p.executeUpdate();

System.out.println("Testing value " + new Double("1.001").doubleValue() );
ResultSet r = s.executeQuery("select * from joe");
while (r.next())
{
System.out.println("native driver object is a " + r.getObject(1).getClass() );
System.out.println(" value is " + r.getObject(1) );
System.out.println("as getDouble it's " + r.getDouble(1) );
}

double d = 1.001d;
double dd = new Double("1.001").doubleValue();
System.out.println("double d = 1.001d gives " + d );
System.out.println("new Double(\"1.001\").doubleValue() gives " + dd );
if (d == dd)
System.out.println("they are equal." );
else
System.out.println("they are not equal." );

System.out.println("new BigDecimal(1.001d) gives " + new BigDecimal(1.001d) );
System.out.println("new BigDecimal( new Double(\"1.001\").doubleValue() ) gives "
+ new BigDecimal( new Double("1.001").doubleValue() ) );

}
catch (Exception e)
{ e.printStackTrace(); }
finally
{ try {c.close();}catch (Exception e){} }
}
}

Feb 16 '06 #1
15 2420
Joe Weinstein wrote:
Results on Linux Box
--------------------------------------------------------------
-bash-2.05b$ java db2
08.02.0001
Database version is 08.02.0000
Testing value 1.001
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.0010000000000001 <<<<<<<<<< SEE
THIS! native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.0010000000000001 <<<<<<<<<< SEE
THIS! double d = 1.001d gives 1.001
new Double("1.001").doubleValue() gives 1.001
they are equal.
new BigDecimal(1.001d) gives
1.000999999999999889865875957184471189975738525390 6 25
new BigDecimal( new Double("1.001").doubleValue() ) gives
1.000999999999999889865875957184471189975738525390 625
Results on Solaris Box
---------------------------------------------------------------
bash-3.00$java db2
08.02.0002
Database version is 08.02.0000
Testing value 1.001
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.001 <<<<<<<<<<
DIFFERENT! native driver object is a class java.math.BigDecimal
value is 1.001 <<<<<<<<<<
DIFFERENT!
as getDouble it's 1.001
double d = 1.001d gives 1.001
new Double("1.001").doubleValue() gives 1.001
they are equal.
new BigDecimal(1.001d) gives
1.000999999999999889865875957184471189975738525390 625 new BigDecimal( new
Double("1.001").doubleValue() ) gives
1.000999999999999889865875957184471189975738525390 625
------------------------------------------------------------------


You should compare the binary representation of the double value. I assume
that _those_ are identical and what you are seeing is due to varying
implementations in your JVMs when the double value is converted to a
string.

--
Knut Stolze
DB2 Information Integration Development
IBM Germany
Feb 17 '06 #2
Joe Weinstein wrote:
Hi. Below is a simple JDBC program to insert and extract
a numerical value. When ResultSet.getDouble() is called,
the same program produces different output on solaris
than it does on Linux.


String-Output of double/float values depends on the JVM.

But this isn't a problem of Java - its a problem we have since the
invention of floating point operations.

Thats why mercantile applications are using BCD, fixed point or simply
rounding every result to the precision needed.

Bernd
Feb 17 '06 #3
Thanks much. I think you're right. I'll do that.
thanks,
Joe

Knut Stolze wrote:
Joe Weinstein wrote:

Results on Linux Box
--------------------------------------------------------------
-bash-2.05b$ java db2
08.02.0001
Database version is 08.02.0000
Testing value 1.001
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.0010000000000001 <<<<<<<<<< SEE
THIS! native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.0010000000000001 <<<<<<<<<< SEE
THIS! double d = 1.001d gives 1.001
new Double("1.001").doubleValue() gives 1.001
they are equal.
new BigDecimal(1.001d) gives
1.0009999999999998898658759571844711899757385253 906 25
new BigDecimal( new Double("1.001").doubleValue() ) gives
1.0009999999999998898658759571844711899757385253 90625
Results on Solaris Box
---------------------------------------------------------------
bash-3.00$java db2
08.02.0002
Database version is 08.02.0000
Testing value 1.001
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.001 <<<<<<<<<<
DIFFERENT! native driver object is a class java.math.BigDecimal
value is 1.001 <<<<<<<<<<
DIFFERENT!
as getDouble it's 1.001
double d = 1.001d gives 1.001
new Double("1.001").doubleValue() gives 1.001
they are equal.
new BigDecimal(1.001d) gives
1.0009999999999998898658759571844711899757385253 90625 new BigDecimal( new
Double("1.001").doubleValue() ) gives
1.0009999999999998898658759571844711899757385253 90625
------------------------------------------------------------------

You should compare the binary representation of the double value. I assume
that _those_ are identical and what you are seeing is due to varying
implementations in your JVMs when the double value is converted to a
string.


Feb 17 '06 #4


Bernd Hohmann wrote:
Joe Weinstein wrote:
Hi. Below is a simple JDBC program to insert and extract
a numerical value. When ResultSet.getDouble() is called,
the same program produces different output on solaris
than it does on Linux.

String-Output of double/float values depends on the JVM.

But this isn't a problem of Java - its a problem we have since the
invention of floating point operations.

Thats why mercantile applications are using BCD, fixed point or simply
rounding every result to the precision needed.

Bernd


Thanks. I should have checked this out. I will.
Joe

Feb 17 '06 #5
Joe Weinstein wrote:
Thanks. I should have checked this out. I will.


Glad to help. If you need more or something else - DB2 JDBC bothers me
since years :-)

Bernd
Feb 17 '06 #6
Hi Knut. I just rechecked the code I sent, and it includes
some stuff to verify whether the JVM itself is printing
stuff differently, and it's not. It's just the driver's
getDouble() that behaves differently.
If you see anything I missed about checking the
JVM itself, let me know what to try. Thanks
Joe

Statement s = c.createStatement();
try{s.executeUpdate("drop table joe");}catch (Exception ignore){}
s.executeUpdate("create table joe (bar decimal(4,3))");
s.executeUpdate("insert into joe values(1.001)");
PreparedStatement p = c.prepareStatement("insert into joe values(?)");
p.setDouble(1, new Double("1.001").doubleValue());
p.executeUpdate();

System.out.println("Testing value " + new Double("1.001").doubleValue() );
ResultSet r = s.executeQuery("select * from joe");
while (r.next())
{
System.out.println("native driver object is a " + r.getObject(1).getClass() );
System.out.println(" value is " + r.getObject(1) );
System.out.println("as getDouble it's " + r.getDouble(1) );
}

double d = 1.001d;
double dd = new Double("1.001").doubleValue();
System.out.println("double d = 1.001d gives " + d );
System.out.println("new Double(\"1.001\").doubleValue() gives " + dd );
if (d == dd)
System.out.println("they are equal." );
else
System.out.println("they are not equal." );

System.out.println("new BigDecimal(1.001d) gives " + new BigDecimal(1.001d) );
System.out.println("new BigDecimal( new Double(\"1.001\").doubleValue() ) gives "
+ new BigDecimal( new Double("1.001").doubleValue() ) );

Knut Stolze wrote:
Joe Weinstein wrote:

Results on Linux Box
--------------------------------------------------------------
-bash-2.05b$ java db2
08.02.0001
Database version is 08.02.0000
Testing value 1.001
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.0010000000000001 <<<<<<<<<< SEE
THIS! native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.0010000000000001 <<<<<<<<<< SEE
THIS! double d = 1.001d gives 1.001
new Double("1.001").doubleValue() gives 1.001
they are equal.
new BigDecimal(1.001d) gives
1.0009999999999998898658759571844711899757385253 906 25
new BigDecimal( new Double("1.001").doubleValue() ) gives
1.0009999999999998898658759571844711899757385253 90625
Results on Solaris Box
---------------------------------------------------------------
bash-3.00$java db2
08.02.0002
Database version is 08.02.0000
Testing value 1.001
native driver object is a class java.math.BigDecimal
value is 1.001
as getDouble it's 1.001 <<<<<<<<<<
DIFFERENT! native driver object is a class java.math.BigDecimal
value is 1.001 <<<<<<<<<<
DIFFERENT!
as getDouble it's 1.001
double d = 1.001d gives 1.001
new Double("1.001").doubleValue() gives 1.001
they are equal.
new BigDecimal(1.001d) gives
1.0009999999999998898658759571844711899757385253 90625 new BigDecimal( new
Double("1.001").doubleValue() ) gives
1.0009999999999998898658759571844711899757385253 90625
------------------------------------------------------------------

You should compare the binary representation of the double value. I assume
that _those_ are identical and what you are seeing is due to varying
implementations in your JVMs when the double value is converted to a
string.


Feb 17 '06 #7
Joe Weinstein wrote:
Hi Knut. I just rechecked the code I sent, and it includes
some stuff to verify whether the JVM itself is printing
stuff differently, and it's not. It's just the driver's
getDouble() that behaves differently.
If you see anything I missed about checking the
JVM itself, let me know what to try. Thanks
Joe

Statement s = c.createStatement();
try{s.executeUpdate("drop table joe");}catch (Exception ignore){}
s.executeUpdate("create table joe (bar decimal(4,3))");
s.executeUpdate("insert into joe values(1.001)");
PreparedStatement p = c.prepareStatement("insert into joe
values(?)"); p.setDouble(1, new Double("1.001").doubleValue());
p.executeUpdate();

System.out.println("Testing value " + new
Double("1.001").doubleValue() ); ResultSet r =
s.executeQuery("select * from joe"); while (r.next())
{
System.out.println("native driver object is a " +
r.getObject(1).getClass() ); System.out.println(" value is " +
r.getObject(1) ); System.out.println("as getDouble it's " +
r.getDouble(1) );
}

double d = 1.001d;
double dd = new Double("1.001").doubleValue();
System.out.println("double d = 1.001d gives " + d );
System.out.println("new Double(\"1.001\").doubleValue() gives " +
dd ); if (d == dd)
System.out.println("they are equal." );
else
System.out.println("they are not equal." );

System.out.println("new BigDecimal(1.001d) gives " + new
BigDecimal(1.001d) ); System.out.println("new BigDecimal( new
Double(\"1.001\").doubleValue() ) gives "
+ new BigDecimal( new Double("1.001").doubleValue() ) );


You are not looking at the binary representation of the numbers. Everything
else are just the usual rounding issues related to the conversion between
the internal binary format and the external decimal format.

You should also read this article to understand how floating point numbers
are represented in today's computer systems:
http://cch.loria.fr/documentation/IE...M/goldberg.pdf

--
Knut Stolze
DB2 Information Integration Development
IBM Germany
Feb 17 '06 #8


Knut Stolze wrote:
Joe Weinstein wrote:

Hi Knut. I just rechecked the code I sent, and it includes
some stuff to verify whether the JVM itself is printing
stuff differently, and it's not. It's just the driver's
getDouble() that behaves differently.
If you see anything I missed about checking the
JVM itself, let me know what to try. Thanks
Joe

Statement s = c.createStatement();
try{s.executeUpdate("drop table joe");}catch (Exception ignore){}
s.executeUpdate("create table joe (bar decimal(4,3))");
s.executeUpdate("insert into joe values(1.001)");
PreparedStatement p = c.prepareStatement("insert into joe
values(?)"); p.setDouble(1, new Double("1.001").doubleValue());
p.executeUpdate();

System.out.println("Testing value " + new
Double("1.001").doubleValue() ); ResultSet r =
s.executeQuery("select * from joe"); while (r.next())
{
System.out.println("native driver object is a " +
r.getObject(1).getClass() ); System.out.println(" value is " +
r.getObject(1) ); System.out.println("as getDouble it's " +
r.getDouble(1) );
}

double d = 1.001d;
double dd = new Double("1.001").doubleValue();
System.out.println("double d = 1.001d gives " + d );
System.out.println("new Double(\"1.001\").doubleValue() gives " +
dd ); if (d == dd)
System.out.println("they are equal." );
else
System.out.println("they are not equal." );

System.out.println("new BigDecimal(1.001d) gives " + new
BigDecimal(1.001d) ); System.out.println("new BigDecimal( new
Double(\"1.001\").doubleValue() ) gives "
+ new BigDecimal( new Double("1.001").doubleValue() ) );

You are not looking at the binary representation of the numbers. Everything
else are just the usual rounding issues related to the conversion between
the internal binary format and the external decimal format.


Actually, yes I am. I am banking off the spec for BigDecimal:
"Translates a double into a BigDecimal which is the exact decimal
representation of the double's binary floating-point value."

I'll see if I can make some more additions to make it clearer to me.
thanks,
Joe

You should also read this article to understand how floating point numbers
are represented in today's computer systems:
http://cch.loria.fr/documentation/IE...M/goldberg.pdf


Feb 17 '06 #9
Joe Weinstein wrote:
Actually, yes I am. I am banking off the spec for BigDecimal:
"Translates a double into a BigDecimal which is the exact decimal
representation of the double's binary floating-point value."


The issue I still have with this is that you are dealing with different
representations of floating point numbers and that you are still not
comparing the internal binary IEEE754 representation.

The Java manual (http://java.sun.com/j2se/1.4.2/docs/api/index.html) gives a
nice example, which most probably applies to your question:
-----------------------------------------------------
public BigDecimal(double val)

Translates a double into a BigDecimal. The scale of the BigDecimal is
the smallest value such that (10scale * val) is an integer.

Note: the results of this constructor can be somewhat unpredictable. One
might assume that new BigDecimal(.1) is exactly equal to .1, but it is
actually equal to .1000000000000000055511151231257827021181583404541 015625.
This is so because .1 cannot be represented exactly as a double (or, for
that matter, as a binary fraction of any finite length). Thus, the long
value that is being passed in to the constructor is not exactly equal
to .1, appearances notwithstanding.

The (String) constructor, on the other hand, is perfectly predictable:
new BigDecimal(".1") is exactly equal to .1, as one would expect.
Therefore, it is generally recommended that the (String) constructor be
used in preference to this one.
-----------------------------------------------------

I would recommend that you try "Double.compare" or
"Double.doubleToRawLongBits" instead.

--
Knut Stolze
DB2 Information Integration Development
IBM Germany
Feb 20 '06 #10


Knut Stolze wrote:
Joe Weinstein wrote:

Actually, yes I am. I am banking off the spec for BigDecimal:
"Translates a double into a BigDecimal which is the exact decimal
representation of the double's binary floating-point value."

The issue I still have with this is that you are dealing with different
representations of floating point numbers and that you are still not
comparing the internal binary IEEE754 representation.

The Java manual (http://java.sun.com/j2se/1.4.2/docs/api/index.html) gives a
nice example, which most probably applies to your question:
-----------------------------------------------------
public BigDecimal(double val)

Translates a double into a BigDecimal. The scale of the BigDecimal is
the smallest value such that (10scale * val) is an integer.

Note: the results of this constructor can be somewhat unpredictable. One
might assume that new BigDecimal(.1) is exactly equal to .1, but it is
actually equal to .1000000000000000055511151231257827021181583404541 015625.
This is so because .1 cannot be represented exactly as a double (or, for
that matter, as a binary fraction of any finite length). Thus, the long
value that is being passed in to the constructor is not exactly equal
to .1, appearances notwithstanding.

The (String) constructor, on the other hand, is perfectly predictable:
new BigDecimal(".1") is exactly equal to .1, as one would expect.
Therefore, it is generally recommended that the (String) constructor be
used in preference to this one.
-----------------------------------------------------

I would recommend that you try "Double.compare" or
"Double.doubleToRawLongBits" instead.


I have also compared the doubles. It is only the Linux IBM getDouble()
method that fails. The getBigDecimal obviously gets the correct input
from the DBMS and produces an exact 1.001 in both cases, so we can
assume that the getDouble() has the same input. Using "1.001" as well
as the double approximation for 1.001 in every way I can on both
platforms, and I always get the same long decimal approximation on
Linux as I do on Solaris. It's not unpredictable:
1.001000000000000111910480882215779274702072143554 6875. I believe the
problem is somewhere in the IBM driver's code, that it comes up with
1.0010000000000001.

I may be taking up too much of your time, but I thank you for what you've
posted so far. Can you direct me to any IBM forum that might be more
closely interested in JDBC? I would pursue it there. Or if you have some
generic Java code that you'd suggest to prove/disprove your theory that
it's the JVM, I'll run it in both places.
thanks again,
Joe Weinstein at BEA


Feb 20 '06 #11


Oh, I just checked that last reply, sorry: The exact decimal
representation of the double I get on both platforms for
1.001, either directly declared ar via a string constructor
or the getDouble() on Solaris, is actually:

1.000999999999999889865875957184471189975738525390 625

On both platforms, Linux and Solaris, the double I construct
with those bits, or from the Solaris getDouble() prints as
1.001.

The value I misquoted in the last post was what I get
by displaying the bits exactly of the double that the
driver's getDouble() on linux returned. It prints as
1.0010000000000001

it's bits (as decimal) are:

1.001000000000000111910480882215779274702072143554 6875

Feb 20 '06 #12
Joe Weinstein wrote:
I have also compared the doubles. It is only the Linux IBM getDouble()
method that fails. The getBigDecimal obviously gets the correct input
from the DBMS and produces an exact 1.001 in both cases, so we can
assume that the getDouble() has the same input.


Have you used the "Double.doubleToRawLongBits" and printed that number?
This is giving you the internal binary representation.

--
Knut Stolze
DB2 Information Integration Development
IBM Germany
Feb 20 '06 #13


Knut Stolze wrote:
Joe Weinstein wrote:

I have also compared the doubles. It is only the Linux IBM getDouble()
method that fails. The getBigDecimal obviously gets the correct input
from the DBMS and produces an exact 1.001 in both cases, so we can
assume that the getDouble() has the same input.

Have you used the "Double.doubleToRawLongBits" and printed that number?
This is giving you the internal binary representation.


Hi, yes I did. If the internal binary representation was different in any way,
then the BigDecimal constructor, which makes an exact decimal version of the
given double, would also differ. On both platforms, the double that prints as
1.001 has the same raw bits pattern as well as BigDecimal conversion:
doubleToRawLongBits gives 4607186922399644778
for a BigDecimal value 1.000999999999999889865875957184471189975738525390 625
This is the same for the Solaris getDouble().

It is *only* the Double returned by the driver's
getDouble() on Linux that prints as 1.0010000000000001,
with a raw bits pattern of 4607186922399644779,
which makes a BigDecimal 1.001000000000000111910480882215779274702072143554 6875

I can send you or anyone else in IBM the standalone
repro.
thanks
Joe Weinstein at BEA Systems

Feb 21 '06 #14
Joe Weinstein wrote:
Hi, yes I did. If the internal binary representation was different in any
way, then the BigDecimal constructor, which makes an exact decimal version
of the given double, would also differ. On both platforms, the double that
prints as 1.001 has the same raw bits pattern as well as BigDecimal
conversion: doubleToRawLongBits gives 4607186922399644778

It is *only* the Double returned by the driver's
getDouble() on Linux that prints as 1.0010000000000001,
with a raw bits pattern of 4607186922399644779,


Now I got it, I believe. Sorry that I was a bit too dense until now.

I tried this myself, and on Linux I get the raw bits: 4607186922399644778
from the following SQL statement:

SELECT DECIMAL(1.001, 5, 3) FROM sysibm.sysdummy1

I'm using the "com.ibm.db2.jcc.DB2Driver" and a type 4 driver.

So it would be a good idea to know more details about your environment, i.e.
DB2 version and FP level, etc.

--
Knut Stolze
DB2 Information Integration Development
IBM Germany
Feb 21 '06 #15


Knut Stolze wrote:
Joe Weinstein wrote:

Hi, yes I did. If the internal binary representation was different in any
way, then the BigDecimal constructor, which makes an exact decimal version
of the given double, would also differ. On both platforms, the double that
prints as 1.001 has the same raw bits pattern as well as BigDecimal
conversion: doubleToRawLongBits gives 4607186922399644778

It is *only* the Double returned by the driver's
getDouble() on Linux that prints as 1.0010000000000001,
with a raw bits pattern of 4607186922399644779,

Now I got it, I believe. Sorry that I was a bit too dense until now.

I tried this myself, and on Linux I get the raw bits: 4607186922399644778
from the following SQL statement:

SELECT DECIMAL(1.001, 5, 3) FROM sysibm.sysdummy1

I'm using the "com.ibm.db2.jcc.DB2Driver" and a type 4 driver.

So it would be a good idea to know more details about your environment, i.e.
DB2 version and FP level, etc.


Thanks much. Database version is 08.02.0000. The driver is type-2.
That is the likely reason for the bug (platform dependence)
Joe

Feb 21 '06 #16

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Axel Dachtler | last post by:
Hello, my Java-program can't load the JDBC driver. I always get a java.lang.NoClassDefFoundError when I run it. The JDBC Driver is in the directory: C:\programs\ora92\jdbc\lib I think I...
0
by: Priya | last post by:
Hi, I am having some problem with DB2 Universal JDBC driver. 1. The method getColumnType(columnNumber)of ResultSetMetaData always returns zero. 2. The method getColumnDisplaySize(ColumnNum)...
4
by: Dani | last post by:
Hi everyone Description of the problem: Using a PreparedStatement to write down an integer (int) plus a timestamp for testing purposes. When read out again the integer looks very different. We...
0
by: Bing | last post by:
Hi, I am configuring the same DB2 v8.1 JDBC universal driver (db2jcc.jar and db2jcc_license_cisuz.jar) from DB2 SP5 fix pack under WSAD 5.1.x environment and WebSphere application Server 5.0.2...
2
by: Raquel | last post by:
Read this about the Universal JDBC Driver.... "In a Type 2 mode, the Universal JDBC driver provides local application performance gains (because it avoids using TCP/IP protocol to communicate to...
1
by: eugene | last post by:
Happy Christmas to all (who celebrate)! It's still not clear to me... when in a java stored procedure it says: conn = DriverManager.getConnection("jdbc:default:connection"); what driver DB2...
3
by: kavallin | last post by:
I wonder if anyone has compared the db2 universal jdbc driver type 2 and 4 with the legacy db2 driver. Which one is the best to use ? I'm working in a project where the envm looks like this ...
1
by: Marc Melancon | last post by:
hi, Does MS2005 JDBC Driver 1.1 support integrated security on Solaris and if so how? Thanks, MarcM
0
by: dunleav1 | last post by:
How can I be sure that DB2_LINUXAIO is working properly in DB 9 FP3? The parameter db2_linuxaio was depreciated from the base version to FP3 and my performance tests have shown a decrease in...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.