com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

So, you have a com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure java.net.ConnectException: Connection refused I’m quoting from this answer which also contains a step-by-step MySQL+JDBC tutorial: If you get a SQLException: Connection refused or Connection timed out or a MySQL specific CommunicationsException: Communications link failure, then it means that the DB isn’t reachable at all. This can have … Read more

“Incorrect string value” when trying to insert UTF-8 into MySQL via JDBC?

MySQL’s utf8 permits only the Unicode characters that can be represented with 3 bytes in UTF-8. Here you have a character that needs 4 bytes: \xF0\x90\x8D\x83 (U+10343 GOTHIC LETTER SAUIL). If you have MySQL 5.5 or later you can change the column encoding from utf8 to utf8mb4. This encoding allows storage of characters that occupy … Read more

Connection pooling options with JDBC: DBCP vs C3P0 [closed]

DBCP is out of date and not production grade. Some time back we conducted an in-house analysis of the two, creating a test fixture which generated load and concurrency against the two to assess their suitability under real life conditions. DBCP consistently generated exceptions into our test application and struggled to reach levels of performance … Read more

To prevent a memory leak, the JDBC Driver has been forcibly unregistered

Since version 6.0.24, Tomcat ships with a memory leak detection feature, which in turn can lead to this kind of warning messages when there’s a JDBC 4.0 compatible driver in the webapp’s /WEB-INF/lib which auto-registers itself during webapp’s startup using the ServiceLoader API, but which did not auto-deregister itself during webapp’s shutdown. This message is … Read more

Connect Java to a MySQL database

Here’s a step by step explanation how to install MySQL and JDBC and how to use it: Download and install the MySQL server. Just do it the usual way. Remember the port number whenever you’ve changed it. It’s by default 3306. Download the JDBC driver and put in classpath, extract the ZIP file and put … Read more

PreparedStatement IN clause alternatives?

An analysis of the various options available, and the pros and cons of each is available in Jeanne Boyarsky’s Batching Select Statements in JDBC entry on JavaRanch Journal. The suggested options are: Prepare SELECT my_column FROM my_table WHERE search_column = ?, execute it for each value and UNION the results client-side. Requires only one prepared … Read more

How to get the insert ID in JDBC?

If it is an auto generated key, then you can use Statement#getGeneratedKeys() for this. You need to call it on the same Statement as the one being used for the INSERT. You first need to create the statement using Statement.RETURN_GENERATED_KEYS to notify the JDBC driver to return the keys. Here’s a basic example: public void … Read more