【发布时间】:2011-12-02 04:22:43
【问题描述】:
我正在使用“插入或更新”查询,如下所示:
String sql =
"INSERT INTO servlets (path, applicationId, startTime, numOfRequests, totalResponseTime, totalBytes)" +
"VALUES (?, ?, NOW(), 1, ?, ?)" +
"ON DUPLICATE KEY UPDATE numOfRequests = numOfRequests + 1, " +
"totalResponseTime = totalResponseTime + ?, totalBytes = totalBytes + ?";
我正在使用准备好的语句并以下列方式用相关参数填充它:
statement = connection.prepareStatement(sql);
statement.setString(1, i_ServletModel.GetPath());
statement.setInt(2, i_ServletModel.GetApplicationId());
statement.setLong(3, i_RequestStats.GetResponseTime());
statement.setLong(4, i_RequestStats.GetBytes());
statement.setLong(5, i_RequestStats.GetResponseTime());
statement.setLong(6, i_RequestStats.GetBytes());
请注意,参数 3 与参数 5 完全相同,参数 4 与参数 6 完全相同,因为它们在上面的查询中需要相同的值。
有什么我可以改变的,无论是在查询中还是在参数填充方法中,以避免这种“丑陋”的语法?
【问题讨论】:
-
一个可以避免这种重复的特性是命名参数。不幸的是,JDBC 不支持这些。