亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

一個數據庫序號類NoCtr類的實現

2019-11-18 12:01:28
字體:
來源:轉載
供稿:網友

  一個NoCtrl類的實現
  
  ·
  ·import java.sql.*;
  ·import com.liming.db.*;
  ·import com.liming.util.*;
  ·import java.text.*;
  ·
  ·/**
  · * <p>Title: 編號控制檔</p>
  · * <p>Description: </p>
  · * <p>Copyright: Copyright (c) 2005</p>
  · * <p>Company: Liming Network System</p>
  · * @author Yao Kui
  · * @version 1.0
  · */
  ·
  ·public class NoCtrl {
  · /**
  ·  * 調試模式
  ·  * 0=非調試模式;1=調試模式
  ·  */
  · public static int DebugMode = 0;
  ·
  · public static String CURR_DATE = "CURR_DATE";//編碼規則,當前日期eg:20050501
  · public NoCtrl() {
  · }
  · /**
  ·  * @dePRecated
  ·  * @see currNO
  ·  * @param tableCode
  ·  * @param columnCode
  ·  * @return
  ·  */
  · public static String currNo(String tableCode,String columnCode){
  ·  Connection con = null;
  ·  Statement stmt = null;
  ·  DBManager dbMgr = new DBManager();
  ·
  ·  try{
  ·   String sqlStr =
  ·     "SELECT * FROM NO_CTRL";
  ·   String where = " WHERE TABLE_CODE='"+tableCode+"'";
  ·   if(columnCode != null) where += " AND COLUMN_CODE='"+columnCode+"'";
  ·   sqlStr += where;
  ·    APPTools.printStack(sqlStr);
  ·
  ·    if (DebugMode==0) {
  ·      con = dbMgr.getConnect(JndiName.JNDIOracle);
  ·    }
  ·    else {
  ·      con = dbMgr.getConnDirect();
  ·    }
  ·    stmt = con.createStatement();
  ·
  ·    ResultSet rst = stmt.executeQuery(sqlStr);
  ·    if(rst.next()){
  ·     String prefix = coverFixString(rst.getString("PREFIX"));
  ·     String postfix = coverFixString(rst.getString("POSTFIX"));
  ·     int currNo = rst.getInt("CURR_NO");
  ·     int numLen = rst.getInt("NUM_LEN");
  ·     stmt.executeUpdate("UPDATE NO_CTRL SET CURR_NO=CURR_NO+1"+where);
  ·     return prefix+lpad(Integer.toString(currNo),"0",numLen)+postfix;
  ·    }else{
  ·     return null;
  ·    }
  ·  }
  ·  catch(SQLException se) {
  ·    AppTools.printStack("操作編號控制檔失??!");
  ·    AppTools.printStack(se);
  ·    return null;
  ·  }
  ·  catch(Exception e) {
  ·    AppTools.printStack("操作編號控制檔失??!");
  ·    AppTools.printStack(e);
  ·    return null;
  ·  }
  ·  finally
  ·  {
  ·    dbMgr.release(con,stmt);
  ·  }
  · }
  · private static String coverFixString(String fix){
  ·  if(fix == null) return "";
  ·  java.text.SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
  ·  long date = System.currentTimeMillis();
  ·  String datestr = df.format(new Date(date));
  ·
  ·
  ·  /*if(CURR_DATE.equals(fix)){
  ·   java.text.SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
  ·   long date = System.currentTimeMillis();
  ·   return df.format(new Date(date));
  ·  }*/
  ·  return fix.replaceAll(CURR_DATE,datestr);
  · }
  · //將字符串左補串到一定長度
  · private static String lpad(String src,String pad,int len){
  ·  if(src.length() >= len) return src;
  ·  int padLen = len - src.length();
  ·  int padTimes = padLenpad.length() + 1;
  ·  StringBuffer sb = new StringBuffer();
  ·  for(int i=0;i<padTimes;i++){
  ·   sb.append(pad);
  ·  }
  ·  return sb.toString().substring(0,padLen)+src;
  · }
  · public static void main(String args){
  ·  System.out.println(NoCtrl.lpad("15","0",5));
  ·
  ·  System.out.println(NoCtrl.lpad("aaas15","0",5));
  ·  System.out.println(NoCtrl.lpad("15","ab",5));
  ·  System.out.println(NoCtrl.coverFixString(null));
  ·
  ·  System.out.println(NoCtrl.coverFixString("asdff"));
  ·  System.out.println(NoCtrl.currNo("IN_BOX","IN_NO"));
  · }
  ·
  · /*上面的currNo方法對于業務邏輯后面報錯的情況,會出現跳號的情況。對于要保證不跳號的業務則不可以。
  ·   下面是將取號與更新分開,延遲更新來保證不跳號的情況。首先業務取得的號(在出現新增頁面則就要顯示編號的情況)
  ·  只是表示“大致”的編號,在更新時一個事務中重新取號與更新編號。
  ·  */
  · public static String currNO(String tableCode,String columnCode){
  ·  return currNO(tableCode,columnCode,false);
  · }
  ·
  · /**
  ·  *更新序號,在業務新增數據中一起執行,為了保證多用戶時也正確,不會重復。取得號后更新時加上原號
  ·  * 作為條件,正如多用戶更新加上版本(version)字段一樣。
  ·  * @param tableCode
  ·  * @param columnCode
  ·  * @param currNum
  ·  * @return
  ·  */
  · public static String updateNOSql(String tableCode,String columnCode,String currNum){
  ·  return updateNOSql(tableCode,columnCode,currNum,1);
  · }
  ·
  · /*對于上面的取與更新在一個事務中進行。只取一個號,取時不用加鎖。
  ·  對于假如后臺要進行插入(多條),取回多個號,最好是連續時。如
  ·  for(){
  ·  insert(no,..);
  ·  }
  ·  由于在一個事務中,所以NO_CTRL沒有更新,對自己或其它用戶,取下一個號都不對。
  ·  所以最好使用加鎖(for update)讀出第一個號,最后的更新語句傳導入使用的個數。
  ·  var no = 加鎖讀出第一個號。
  ·  for(i=0;i<xxx;i++){
  ·  insert(no+i,...);
  ·  }
  ·  update(curr_no=curr_no+xxx)。
  ·  */
  · public static String currNO(String tableCode,String columnCode,boolean lock){
  ·  Connection con = null;
  ·  Statement stmt = null;
  ·  DBManager dbMgr = new DBManager();
  ·  String rt = new String2;
  ·  try{
  ·   String sqlStr =
  ·     "SELECT * FROM NO_CTRL";
  ·   String where = " WHERE TABLE_CODE='"+tableCode+"'";
  ·   if(columnCode != null) where += " AND COLUMN_CODE='"+columnCode+"'";
  ·   sqlStr += where;
  ·   if(lock) sqlStr += " FOR UPDATE"; //**LOCK
  ·    AppTools.printStack(sqlStr);
  ·
  ·    if (DebugMode==0) {
  ·      con = dbMgr.getConnect(JndiName.JNDIORACLE);
  ·    }
  ·    else {
  ·      con = dbMgr.getConnDirect();
  ·    }
  ·    stmt = con.createStatement();
  ·
  ·    ResultSet rst = stmt.executeQuery(sqlStr);
  ·    if(rst.next()){
  ·     String prefix = coverFixString(rst.getString("PREFIX"));
  ·     String postfix = coverFixString(rst.getString("POSTFIX"));
  ·     int currNo = rst.getInt("CURR_NO");
  ·     int numLen = rst.getInt("NUM_LEN");
  ·     //stmt.executeUpdate("UPDATE NO_CTRL SET CURR_NO=CURR_NO+1"+where);//延遲更新
  ·     rt0 = prefix+lpad(Integer.toString(currNo),"0",numLen)+postfix;
  ·     rt1 = Integer.toString(currNo);
  ·    }
  ·    return rt;
  ·  }
  ·  catch(SQLException se) {
  ·    AppTools.printStack("操作編號控制檔失??!");
  ·    AppTools.printStack(se);
  ·    return null;
  ·  }
  ·  catch(Exception e) {
  ·    AppTools.printStack("操作編號控制檔失?。?);
  ·    AppTools.printStack(e);
  ·    return null;
  ·  }
  ·  finally
  ·  {
  ·    dbMgr.release(con,stmt);
  ·  }
  · }
  · /**
  ·  * 返回更新NO_CTRL的語句
  ·  * @param tableCod

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频线视频免费网站| 国产精品一区二区三区久久| 在线视频中文亚洲| 中文字幕亚洲第一| 九九热精品视频在线播放| 亚洲美女av网站| 欧美色视频日本版| www.日本久久久久com.| 欧美多人乱p欧美4p久久| 国产在线高清精品| 亚洲日韩中文字幕在线播放| 亚洲精品美女网站| 欧美激情一级欧美精品| 亚洲的天堂在线中文字幕| 在线观看欧美成人| 国产精品入口尤物| 日韩大胆人体377p| 亚洲欧美精品一区二区| 日韩欧美一区二区三区久久| 国产精品入口尤物| 久久99国产精品自在自在app| 欧美肥臀大乳一区二区免费视频| 97国产精品视频人人做人人爱| 亚洲欧美激情四射在线日| 亚洲成人999| 日韩电影中文字幕| 欧美一级黄色网| 国产97人人超碰caoprom| 欧美大片va欧美在线播放| 91精品视频在线免费观看| 色综合视频一区中文字幕| 国产欧美在线播放| 国产不卡在线观看| 国产精品久久久久久久av大片| 国产精品福利在线观看| 亚洲精品日韩激情在线电影| 精品视频在线观看日韩| 日本欧美国产在线| 精品久久久久久久久久ntr影视| 国产精品国产福利国产秒拍| 日韩一区二区久久久| 成人黄色免费片| 久久人体大胆视频| 91久久在线播放| 亚洲欧美国产精品专区久久| xxxx性欧美| 91青草视频久久| 欧美高清视频免费观看| 日韩高清电影好看的电视剧电影| 亚洲经典中文字幕| 亚洲片国产一区一级在线观看| 成年无码av片在线| 亚洲国产女人aaa毛片在线| 九九热最新视频//这里只有精品| 另类美女黄大片| 久久97久久97精品免视看| 欧美精品成人在线| 57pao成人永久免费视频| 国产日韩精品综合网站| 亚洲国产第一页| 日韩激情av在线播放| 日韩电影中文字幕| 91天堂在线视频| 日韩男女性生活视频| 久久亚洲欧美日韩精品专区| 久久久国产视频91| 91精品国产高清自在线| 视频一区视频二区国产精品| 欧美性受xxxx黑人猛交| 日韩欧美国产免费播放| 久久99国产精品自在自在app| 高清欧美性猛交xxxx黑人猛交| 亚洲福利在线看| 欧美丝袜第一区| 亚洲第一中文字幕| 一区二区三区视频免费在线观看| 日本成熟性欧美| 国产精品第七十二页| 国产在线观看91精品一区| 性夜试看影院91社区| 自拍视频国产精品| 国产精品久久久久秋霞鲁丝| 91精品国产综合久久香蕉922| 国产成人鲁鲁免费视频a| 国产精品福利久久久| 91a在线视频| 亚洲欧美制服综合另类| 欧美在线视频播放| 亚洲精品美女在线观看| 亚洲成人av在线播放| 日韩亚洲欧美中文高清在线| 北条麻妃一区二区三区中文字幕| 日韩a**站在线观看| 亚洲精品福利在线| 国产精品视频午夜| 91av国产在线| 久热在线中文字幕色999舞| 国产亚洲欧美另类中文| 青青青国产精品一区二区| 欧美日韩中文字幕在线视频| 91网站免费观看| 国产精品999| 日韩视频第一页| 国产视频自拍一区| 亚洲免费影视第一页| 国产精品嫩草影院久久久| 国产91|九色| 亚洲自拍av在线| 色综合久久悠悠| 国产精品pans私拍| 992tv在线成人免费观看| 国产在线观看精品| 国产一区二区三区网站| 亚洲毛片在线免费观看| 色偷偷9999www| 欧美有码在线观看| 97视频在线观看免费高清完整版在线观看| 91久久在线播放| 久久久久亚洲精品| 亚洲视频在线观看| 色噜噜狠狠色综合网图区| 欧美性黄网官网| 欧美成人午夜视频| 久久久欧美一区二区| 亚洲第一精品福利| 精品偷拍各种wc美女嘘嘘| 成人性生交大片免费看视频直播| 欧美日韩国产一区二区三区| 午夜精品在线视频| 色悠悠久久久久| 精品亚洲男同gayvideo网站| 国产成人综合精品在线| 自拍偷拍亚洲欧美| 狠狠色狠色综合曰曰| 亚洲精品美女久久久| 亚洲男人天堂九九视频| 国产精品va在线播放我和闺蜜| 国产精品成人播放| 亚洲女人天堂成人av在线| 亚洲视频在线视频| 日韩欧美中文字幕在线播放| 久久久精品网站| 日本久久久久久久| 日韩av片免费在线观看| 日本三级久久久| 激情成人中文字幕| 色婷婷亚洲mv天堂mv在影片| 日韩精品亚洲视频| 国产成人精品久久亚洲高清不卡| 亚洲free嫩bbb| 国精产品一区一区三区有限在线| 国产69精品久久久久99| 96精品久久久久中文字幕| 日韩av中文字幕在线播放| 国产成人亚洲综合青青| 欧美老肥婆性猛交视频| 一区二区三区四区在线观看视频| 午夜精品久久久久久99热软件| 在线观看精品自拍私拍| 夜夜躁日日躁狠狠久久88av| 午夜精品国产精品大乳美女| 最好看的2019的中文字幕视频| 日韩免费av在线| 欧美日韩在线免费|