 <p>You're trying to set the <em>field names</em> as parameters - you can't do that. You can only specify <em>values</em> as parameters. So basically your first 14 <code>setString</code> calls should go away, and you should put those field names in the SQL:</p> <pre><code>String query = "INSERT INTO emp(epfno, fname, lname, sex, nid, address, " + "birthday, position, tpno, fathername, mothername, m_status, " + "comments, photo_id) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; st.setInt(1, emp.epfno); st.setString(2, emp.fname); st.setString(3, emp.lname); // etc </code></pre>