我想做一个小的“事件申请页”的培训。
- (名额有限,先到先得。)*
我使用JSP、JAVA(DAO(数据访问对象))和oracle JDBC。
当客户点击“申请”按钮、
[1. id],[2.应用日期],[3.应用计数(+1)]将保存在我创建数据库表中。
我还不知道如何创建登录会话。所以我创建了一个输入字段,在申请时可以直接输入id。
我可以插入并从数据库表中获取关于ID和申请日期的信息。
但我的麻烦是因为 “应用”计数。
我将设置限制,当“应用计数”为100时不再应用。(先到先得)
如何将应用计数插入到数据库中,以及如何从数据库中获取计数值?
下面是我代码和情况。
1.数据库表格
我创建的列为3 [1.标识] / [2.八月计数] / [3.应用日期] enter image description here
Applybean.java*
package model;
import java.sql.Timestamp;
public class ApplyBean {
private String id ;
private int aug_cnt;
private Timestamp applydate;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAug_cnt() {
return aug_cnt;
}
public void setAug_cnt(int aug_cnt) {
this.aug_cnt = aug_cnt;
}
public Timestamp getApplydate() {
return applydate;
}
public void setApplydate(Timestamp applydate) {
this.applydate = applydate;
}
}
3. ApplyDAO.java
public class ApplyDAO {
Connection con;
PreparedStatement pstmt;
ResultSet rs;
public void getCon() {
try {
Context initctx = new InitialContext();
Context envctx = (Context)initctx.lookup("java:comp/env");
DataSource ds = (DataSource)envctx.lookup("jdbc/pool");
con = ds.getConnection();
}catch(Exception e) {
e.printStackTrace();
}
}
public void insertApply(ApplyBean abean) {
try{
getCon();
String sql = "insert into eventcount_aug values(?,sysdate)";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, abean.getId());
pstmt.setTimestamp(2, abean.getApplydate());
pstmt.executeUpdate();
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
我想我只需要编辑“Applybean.java“文件...
如果我意识到如何插入并获取“apply count”,
我可以找到如何使我的活动页面完美。
我会非常感激你的帮助。
- 谢谢-谢谢
2条答案
按热度按时间bvn4nwqk1#
如果我理解你的问题是正确的,你需要以下东西:
1.在Oracle中创建序列对象:
创建递增1序列my_test_id_seq;
1.更改Oracle表并将此序列用作默认值:
这样,您就可以在插入时自动递增aug_cnt列。
1.然后你可以在
insertApply
中的insert调用之前使用select max(aug_cnt) as count from eventcount_aug;
,它将决定你是否需要继续插入。为此,你可以创建一个实用程序方法,如下所示:私有整数getCount(){
}
然后在try块之前在你的
insertApply
中使用这个:更新:对于Oracle〈12 c版本,可以更新原始
insertApply
方法中的insert。无需重新创建表或更改表&使用序列。
von4xj4u2#
看起来你并不关心应用程序的撤销或者并发问题,你可以在插入新的应用程序之前使用另一个SQL来获取当前的计数。
然后,如果计数〈100,则将新计数设置为计数+1,否则,如果计数〉= 100,则拒绝新应用。