Using prepared statements with JDBCTemplate

前端 未结 5 878
既然无缘
既然无缘 2021-01-31 16:16

I\'m using the JDBC template and want to read from a database using prepared statements. I iterate over many lines in a .csv file, and on every line I execute some SQL select qu

5条回答
  •  粉色の甜心
    2021-01-31 17:08

    I'd factor out the prepared statement handling to at least a method. In this case, because there are no results it is fairly simple (and assuming that the connection is an instance variable that doesn't change):

    private PreparedStatement updateSales;
    public void updateSales(int sales, String cof_name) throws SQLException {
        if (updateSales == null) {
            updateSales = con.prepareStatement(
                "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?");
        }
        updateSales.setInt(1, sales);
        updateSales.setString(2, cof_name);
        updateSales.executeUpdate();
    }
    

    At that point, it is then just a matter of calling:

    updateSales(75, "Colombian");
    

    Which is pretty simple to integrate with other things, yes? And if you call the method many times, the update will only be constructed once and that will make things much faster. Well, assuming you don't do crazy things like doing each update in its own transaction...

    Note that the types are fixed. This is because for any particular query/update, they should be fixed so as to allow the database to do its job efficiently. If you're just pulling arbitrary strings from a CSV file, pass them in as strings. There's also no locking; far better to keep individual connections to being used from a single thread instead.

提交回复
热议问题