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