jdbc取oracle中的序列值,并放到一个变量中

本文展示了如何通过JDBC从Oracle数据库中获取序列值,并将该值用于插入新记录的操作。首先,提供了两种不同的数据库连接方式,然后演示了如何执行SQL查询来获取序列值,并将其存储为变量。最后,将该序列值插入到指定表中的一系列字段中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用jdbc获取oracle中的序列值,并且在oracle中一张表中的两个值可能会用到sequence的值,举个例子:

用户注册-->生成交易账户
说明在用户注册的最后一步,提示注册成功之前,增加一个动作。
往TWX_FAC_TRADE_ACCO表插入两条数据。
交易帐号N_TRADE_ACCO取SEQ_TWX_TRADE_ACCO值。
有效标志C_IS_VALID默认为1,有效。

比如这种问题,那么我们该如何操作呢?不多说了,直接上代码

1、先有一段连接数据库的代码

public Connection getConnection() throws Exception{  
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
   Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.3:1521:orcl", "jsfund_weixin", "jsfund_weixin");  
   return conn;  


数据库的第一种连接是写死的,如果在项目中多处用到了这个方法,更改起来很不方便,那么就可以采用第二种方法:


@Autowired
private RealPathResolver realPathResolver;

public Connection getConnection() throws Exception{  
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
   String url=PropertyUtils.getPropertyValue(new File(realPathResolver.get(Constants.PLUG_PATH_DATABASE)),"jdbc.url");
   String username=PropertyUtils.getPropertyValue(new File(realPathResolver.get(Constants.PLUG_PATH_DATABASE)),"jdbc.username");
   String password=PropertyUtils.getPropertyValue(new File(realPathResolver.get(Constants.PLUG_PATH_DATABASE)),"jdbc.password");
   Connection conn = DriverManager.getConnection(url,username,password);  
   return conn; 


2、取出sequence的值,并且放到一个变量中

try{

Connection conn = getConnection();  
String vsql = "select SEQ_TWX_FAC_TRADE_ACCO.nextval as sid from dual";  
PreparedStatement pstmt =(PreparedStatement)conn.prepareStatement(vsql);  
ResultSet rs=pstmt.executeQuery();  
    rs.next();  
int sid=rs.getInt(1);  
rs.close();  
pstmt.close(); 

}catch(Exception e){

}

3、插入取出的sequence值

String sql="insert into TWX_FAC_TRADE_ACCO(N_ID,N_USER_ID,N_TRADE_ACCO,C_TYPE,D_REGSIT_TIME,C_IS_VALID,D_CREATE_TIME,V_CREATOR,V_LAST_MENDER,D_LAST_MODIFY,V_REMARKS) values(:id,:userId,:accoId,'N',to_date(:registerTime,'yyyy-MM-dd'),1,to_date(:createTime,'yyyy-MM-dd'),:creator,:lastMender,to_date(:lastModify,'yyyy-MM-dd'),:remarks)";
Session session =this.getSession();
Query query =session.createSQLQuery(sql.toString());
query.setInteger("id", sid);
query.setInteger("userId", userId);
query.setInteger("accoId", sid);
query.setInteger("creator", creator);
query.setInteger("lastMender", lastMender);
query.setString("remarks", remarks);
Date now =new Date();
String time =new SimpleDateFormat("yyyy-MM-dd").format(now);
query.setString("registerTime", time);
query.setString("createTime", time);
query.setString("lastModify", time);

int r=query.executeUpdate();
if(r>0){
result=true;
}

}catch(Exception ex){
System.out.println(ex.getMessage());
result =false;
}
return result;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值