请教一个JAVA取Oracle sequence的怪问题,下面是生成一个号码的JAVA代码。
比较奇怪的是99%的情况运行以下代码不会出现问题,但是偶尔会出现取不到oracle序列号(sequence)的问题。
假设某个用户登录后出现这个问题,就会一直出现取不到sequence的问题,其它用户不受影响。
万分紧急,请各位高人指点一二。是否以下语句写的有问题?万分感谢!
String elecNumber = "";
String sql = "Select SEQ_ELECTRONNUM.nextval from dual";
int now = DateTimeUtil.getCurrentYear();
String year = Integer.toString(now).substring(2,4);
//Sequence值格式化为8位字符串,如00000001
DecimalFormat df = new DecimalFormat("00000000");
DataSet dset = (DataSet) DrmDbpmTool.getFnmsDBPM().executeQuery(sql);
if(dset.next()){
elecNumber = year + df.format(dset.getInt(1));
}
比较奇怪的是99%的情况运行以下代码不会出现问题,但是偶尔会出现取不到oracle序列号(sequence)的问题。
假设某个用户登录后出现这个问题,就会一直出现取不到sequence的问题,其它用户不受影响。
万分紧急,请各位高人指点一二。是否以下语句写的有问题?万分感谢!
String elecNumber = "";
String sql = "Select SEQ_ELECTRONNUM.nextval from dual";
int now = DateTimeUtil.getCurrentYear();
String year = Integer.toString(now).substring(2,4);
//Sequence值格式化为8位字符串,如00000001
DecimalFormat df = new DecimalFormat("00000000");
DataSet dset = (DataSet) DrmDbpmTool.getFnmsDBPM().executeQuery(sql);
if(dset.next()){
elecNumber = year + df.format(dset.getInt(1));
}
我没有用java取过,用.net取过,也是这样取,没有见过这种情况
暂时看不出什么问题,高手指点下哦!^^!
请问使用oracle sequence对于客户端网络是不是有什么特殊要求啊?
我们一般都是建立个sequence表来处理主键增加的
另外别忘了close dataSet。
private static Object sequenceLock = new Object();...
synchronized(sequenceLock) {
DataSet dset = (DataSet)DrmDbpmTool.getFnmsDBPM().executeQuery(sql);
if(dset.next()) {
elecNumber = year + df.format(dset.getInt(1));
}
dset.close();
}
....