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

Charles Wilt <[email protected]> Wed, 6 Oct 2021 17:21:16 -0600
Newsgroups gmane.comp.lang.as400.java
Message-ID <CAJ=Tnc6cXau1qH=dznGf1cJSUiaNbqkGm4tPMm_9Uyw8e2-0_w@mail.gmail.com>
It wouldn't have worked before one of the last TR's to 7.2...

Now it does.

Charles

On Wed, Oct 6, 2021 at 5:19 PM Charles Wilt <[email protected]> wrote:

> Yep this, autocasting by the db...
>
> Charles
>
> On Wed, Oct 6, 2021 at 2:19 PM Niels Liisberg <nli-y1igGha7WhZnI0JKdf8LmQC/[email protected]>
> wrote:
>
>> I think it is the auto-cast in Db2 that kicks in. And why statement 3
>> fails. For that it can not cast the current object value.
>>
>>
>> ons. 6. okt. 2021 kl. 21.58 skrev David Gibbs via JAVA400-L <
>> [email protected]>:
>>
>> > 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
>>
>
-- 
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