java.sql.SQLException: No value specified for parameter 2

715 ワード

一、問題提起
public static int batch(Connection connection, String sql, Object[][] params) {
		try(Connection conn = connection){
			PreparedStatement pstat = conn.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				for (int j = 0; j < params[i].length; j++) {
					pstat.setObject(j + 1, params[i][j]);
					//  
					pstat.executeUpdate();
				}
			   //  
			   pstat.executeUpdate();
			}
		} catch(SQLException e) {
			e.printStackTrace();
		}
		return 0;
	}

分析、内部ループはプリコンパイル(予備)文に値を割り当てる責任を負います.パラメータが1つしかない場合は、エラーは発生しません.2つのパラメータがある場合、2番目のパラメータがまだ来ていない場合と値が割り当てられている場合、文が実行されます.2番目のパラメータに値が割り当てられていないという問題が発生します