一个典型的PreparedStatement
//获取数据库连接
connection = this.getConnection();
//创建PreparedStatement
ps = connection.prepareStatement(sql)
实际上PreparedStatement还有两个重要参数
ps = connection.prepareStatement(sql,
resultSetType,
ResultSet.CONCUR_READ_ONLY);
resultSetType参数设置的是TYPE_SCROLL_INSENSITIVE或TYPE_SCROLL_SENSITIVE,
这两个参数的共同特点是允许结果集(ResultSet)的游标可以上下移动。而默认的TYPE_FORWARD_ONLY参数只允许结果集的游标向下移动。
由因ResultSet.TYPE_FORWARD_ONLY 做为resultSetType默认值是安全的. 而其他两个值有内存溢出风险. 因是TYPE_FORWARD_ONLY单一向前滚动, 用过的数据可以直接从内存回收.
CONCUR_READ_ONLY意味着数据是只读的, 与就是说resultSetType数据不可更新.
实际上现在框架不怎么见到在rs 中直接更新的操作. 其设置type为:CONCUR_UPDATABLE
实际上早期常见的一种写法:
rs.next()
rs.updateString("NAME", "songjiang"); // updates the NAME to songjiang
rs.updateRow(); // updates the row in the data source