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:19:36 -0600
| Newsgroups | gmane.comp.lang.as400.java |
|---|---|
| Message-ID | <CAJ=Tnc5APcfQ_guuuaEUXXyEzuna==opKa6CpH+Rt7obEbrdbg@mail.gmail.com> |
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