Folks:

I just encountered a situation where JDBC allowed me to update rows in a table where the values did not match the column definition.

As long as you use the setObject method, you can set a numeric column to a string value and a character column with a numeric value.

The value contents have to match the column definition, but it doesn't seem to care what the data type being passed in.

For instance:

You create a table as such ...

create table testtab1 (
decfield decimal(8,0),
charfield char(10)
)

... and then run code like this ...

try (
Connection conn = DriverManager.getConnection(url, props);
PreparedStatement stmt = conn.prepareStatement("insert into dxglib/testtab1 (decfield,charfield) values(?,?)");
) {

stmt.setObject(1, 1);
stmt.setObject(2, "xyz");
stmt.executeUpdate();

stmt.setObject(1, "2");
stmt.setObject(2, 3);
stmt.executeUpdate();

stmt.setObject(1, "A");
stmt.setObject(2, 3);
stmt.executeUpdate();

} catch (Exception e) {
e.printStackTrace();
}

.. the first two updates will work fine, but the 3rd will fail.

david

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2022 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.