📄 keyinfo.java
字号:
package com.db;
import com.db.DBUtils;
import java.sql.*;
public class KeyInfo
{
private int ikeymax;
private int ikeymin;
private int ikey;
private int ipoolsize;
private String strkeyname;
public KeyInfo(int poolSize, String keyName)
throws KeyGenException
{
ipoolsize = poolSize;
strkeyname = keyName;
KeyGenerator();
}
public int getKeyMax()
{
return ikeymax;
}
public int getKeyMin()
{
return ikeymin;
}
public int getNextKey()
throws KeyGenException
{
if(ikey > ikeymax)
KeyGenerator();
return ikey++;
}
private void KeyGenerator()
throws KeyGenException
{
Connection conn=null;
PreparedStatement stmt=null;
ResultSet rs = null;
try
{
conn=DBUtils.getConnection();
String sql = "select curr_value from XT_ZDZZ where seq_name = ? ";
stmt = conn.prepareStatement(sql);
stmt.setString(1, strkeyname);
rs = stmt.executeQuery();
if(!rs.next())
{
System.out.println("------------------------------->键值不存在!");
throw new KeyGenException("KeyGenerator001 Exception 键名("+strkeyname+")不存在");
}
DBUtils.closeResultSet(rs);
DBUtils.closeStatement(stmt);
sql = "update XT_ZDZZ set curr_value = curr_value + ? where seq_name = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, ipoolsize);
stmt.setString(2, strkeyname);
stmt.executeUpdate();
DBUtils.closeStatement(stmt);
sql = "select curr_value from XT_ZDZZ where seq_name = ? ";
stmt = conn.prepareStatement(sql);
stmt.setString(1, strkeyname);
rs = stmt.executeQuery();
int keyFromDB = 0;
if(rs!=null&&rs.next())
{
keyFromDB = rs.getInt(1);
ikeymax = keyFromDB;
ikeymin = (keyFromDB - ipoolsize) + 1;
ikey = ikeymin;
} else
{
throw new KeyGenException("KeyGenerator002 生成键值不成功!");
}
DBUtils.closeResultSet(rs);
DBUtils.closeStatement(stmt);
}
catch(Exception ex)
{
throw new KeyGenException(null, null, ex);
}
finally
{
DBUtils.closeResultSet(rs);
DBUtils.closeStatement(stmt);
DBUtils.closeConnection(conn);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -