Re: Jaw drop: JDBC will let you update rows with the wrong data type (within reason)

Colin Williams <[email protected]> Thu, 7 Oct 2021 08:03:48 +0100
Newsgroups gmane.comp.lang.as400.java
Message-ID <CAJOH7P2wrBL5v1m5yzhX475HzrW_iX+8iR9nvTXYpz7NXu3C1w@mail.gmail.com>
Do you use JPA? Just asking as eclipselink or hibernate will manage all
this for you and you never have to write jdbc type code or sql again.

On Wed, 6 Oct 2021, 20:58 David Gibbs via JAVA400-L, <
[email protected]> wrote:

> 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
> --
> I'm riding in the American Diabetes Association's Tour de Cure to raise
> money for diabetes research, education, advocacy, and awareness.  You
> can make a tax-deductible donation to my ride by visiting
> https://mideml.diabetessucks.net.
>
> You can see where my donations come from by visiting my interactive
> donation map ... https://mideml.diabetessucks.net/map (it's a geeky
> thing).
> --
> This is the Java Programming on and around the IBM i (JAVA400-L) mailing
> list
> To post a message email: [email protected]
> To subscribe, unsubscribe, or change list options,
> visit: https://lists.midrange.com/mailman/listinfo/java400-l
> or email: JAVA400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
> Before posting, please take a moment to review the archives
> at https://archive.midrange.com/java400-l.
>
> Help support midrange.com by shopping at amazon.com with our affiliate
> link: https://amazon.midrange.com
>
-- 
This is the Java Programming on and around the IBM i (JAVA400-L) mailing list
To post a message email: [email protected]
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request-+hD5IHI5Xscn3HwCXmMcX9BPR1lH4CV8@public.gmane.org
Before posting, please take a moment to review the archives
at https://archive.midrange.com/java400-l.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com