我在其他的stackoverflow問題中尋找這個錯誤,但基本上給出的解決方案與我的代碼是一樣的,我不知道我在做什麼錯誤。java.sql.SQLException:沒有爲參數1錯誤指定值
ps.setInt(1,id);//set param
ResultSet rs= ps.executeQuery();//then execute your statement
我在其他的stackoverflow問題中尋找這個錯誤,但基本上給出的解決方案與我的代碼是一樣的,我不知道我在做什麼錯誤。java.sql.SQLException:沒有爲參數1錯誤指定值
ps.setInt(1,id);//set param
ResultSet rs= ps.executeQuery();//then execute your statement
你應該給你設置Paramettres後執行您的Stetement。翻轉訂單,你應該沒問題:
PreparedStatement ps = cnx.getConnection().prepareStatement(req);
ps.setInt(1,id);
ResultSet rs = ps.executeQuery();
您正試圖執行查詢後設置綁定值,而不是之前的那樣:
public List<ProjectUser> findProjectUserId(int id){
List <ProjectUser> users= new ArrayList<>();
ProjectUser projectuser= null;
try {
String req="select * from projectuser where project=?";
PreparedStatement ps= cnx.getConnection().prepareStatement(req);
ResultSet rs= ps.executeQuery();
ps.setInt(1,id);
while (rs.next()){
projectuser= new ProjectUser(rs.getInt(1), rs.getInt(2), rs.getInt(3));
users.add(projectuser);
}
} catch (SQLException ex){
ex.printStackTrace();
}
return users;
}
在設置PreparedStatement的參數之前,您正在執行查詢。這就是爲什麼你的代碼給予異常。聲明的順序應該是
ps.setInt(1,id);
ResultSet rs= ps.executeQuery();
謝謝大家缺乏睡眠問題:) –