Re: Jaw drop: JDBC will let you update rows with the wrong data type (within reason)
Niels Liisberg <nli-y1igGha7WhZnI0JKdf8LmQC/[email protected]> Wed, 6 Oct 2021 22:19:31 +0200
| Newsgroups | gmane.comp.lang.as400.java |
|---|---|
| Message-ID | <CADAk_-i3dew2+br63O_Zq4U6+ZZW=tNS1hMzwQJcr3meG_Au_w@mail.gmail.com> |
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