無名的博客

          2005年10月25日 #

          如何在TOMCAT配置數據源,調用數據源

          1、在TOMCAT里配置數據源,在<host></host>之間加上下面的代碼,具體的參數根據自己情況修改
          ???<Context path="" docBase="E:\WEB_CODE\DEMO\WEB" debug="0">
          ???
          ???<Logger className="org.apache.catalina.logger.FileLogger"
          ???????????????????? prefix="localhost_xzm_log." suffix=".txt"
          ??????? ?? timestamp="true"/>

          ????????? <Environment name="maxExemptions" type="java.lang.Integer"
          ????????????????????? value="15"/>
          ????????? <Parameter name="context.param.name" value="context.param.value"
          ???????????????????? override="false"/>?????????
          ?????????
          ????????? <Resource name="jdbc/tzwdb" auth="Container"
          ??????????????????? type="oracle.jdbc.pool.OracleDataSource"/>
          ????????? <ResourceParams name="jdbc/tzwdb">
          ??????????? <parameter><name>factory</name><value>oracle.jdbc.pool.OracleDataSourceFactory</value></parameter>???????????
          ??????????? <parameter><name>driverClassName</name><value>oracle.jdbc.driver.OracleDriver</value></parameter>
          ??????????? <parameter><name>url</name><value>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</value></parameter>
          ??????????? <parameter><name>username</name><value>demo</value></parameter>
          ??????????? <parameter><name>password</name><value>demo</value></parameter>
          ??????????? <parameter><name>serverName</name><value>127.0.0.1</value></parameter>???????????
          ??????????? <parameter><name>databaseName</name><value>ORCL</value></parameter>???????????
          ??????????? <parameter><name>portNumber</name><value>1521</value></parameter>
          ??????????? <parameter><name>maxActive</name><value>30</value></parameter>
          ??????????? <parameter><name>maxIdle</name><value>10</value></parameter>
          ??????????? <parameter><name>maxWait</name><value>500</value></parameter>???????????
          ??????????? <parameter><name>description</name><value>oracle</value></parameter>???????????
          ????????? </ResourceParams>
          ???????????
          ????????? <Resource name="mail/Session" auth="Container"
          ??????????????????? type="javax.mail.Session"/>
          ????????? <ResourceParams name="mail/session">
          ??????????? <parameter>
          ????????????? <name>mail.smtp.host</name>
          ????????????? <value>localhost</value>
          ??????????? </parameter>
          ????????? </ResourceParams>
          ???
          ???</Context>

          2、連接數據庫

          import java.sql.Connection;
          import java.sql.PreparedStatement;
          import java.sql.SQLException;
          import java.sql.Statement;

          import javax.naming.Context;
          import javax.naming.InitialContext;
          import javax.sql.DataSource;

          import org.apache.log4j.Logger;

          /**
          ?* @author :?蕭秋水
          ?*
          ?* @contact me :
          cnyanhai@hotmail.com
          ?*
          ?*/
          public class DBManager {


          ??? static Logger logger = Logger.getLogger(DBManager.class.getClass());

          ??? private Context initCtx = null;

          ??? private Context ctx = null;

          ??? private DataSource ds = null;

          ??? private long timeout = 5000;

          ??? private Statement theStatement = null;

          ??? private PreparedStatement thePstmt = null;

          ??? private static final String userName = "tzw";

          ??? private static final String password = "ywsoft";

          ??? /***************************************************************************
          ???? *
          ???? * 初試化initCtx
          ???? *
          ???? * 取得數據源對象
          ???? *?
          ???? **************************************************************************/

          ??? public DBManager() {
          ??????? try {
          ??????????? initCtx = new InitialContext();
          ??????????? //init context,read config web.xml
          ??????????? if (initCtx == null) {
          ??????????????? throw new Exception("Initial Failed!");
          ??????????? }
          ??????????? ctx = (Context) initCtx.lookup("java:comp/env");
          ??????????? //find "jdbc/tzwdb" object this configruation in the SERVER.XML of
          ??????????? // Tomcat
          ??????????? if (ctx != null) {
          ??????????????? ds = (DataSource) ctx.lookup("jdbc/tzwdb");
          ??????????? }
          ??????????? if (ds == null) {
          ??????????????? throw new Exception("Look up DataSource Failed!");
          ??????????? }
          ??????? } catch (Exception e) {
          ??????????? logger.error("Look up DataSource error! -- " + e.getMessage());
          ??????? }
          ??? }

          ??? /***************************************************************************
          ???? *
          ???? * get Connection
          ???? *
          ???? * @return Connection
          ???? *?
          ???? **************************************************************************/

          ??? public synchronized Connection getConnection() {
          ??????? //get connection and set to delay time
          ??????? long startTime = new java.util.Date().getTime();
          ??????? Connection con = null;
          ??????? while (con == null) {
          ??????????? con = newConnection();
          ??????????? if (con != null) {
          ??????????????? logger.info("Create New Connection!");
          ??????????????? break;
          ??????????? }
          ??????????? try {
          ??????????????? logger.info("Connection timeout,Please wait " + timeout + "ms");
          ??????????????? wait(timeout);
          ??????????? } catch (InterruptedException e) {
          ??????????????? logger.warn("Connection timeout! -- " + e.getMessage());
          ??????????? }
          ??????????? if ((new java.util.Date().getTime() - startTime) >= timeout) {
          ??????????????? logger.warn("Connection timeout!");
          ??????????????? break;
          ??????????? }
          ??????? }
          ??????? return con;
          ??? }

          ??? private Connection newConnection() {
          ??????? Connection con = null;
          ??????? try {
          ??????????? con = ds.getConnection(userName, password);
          ??????????? if (con == null) {
          ??????????????? throw new Exception("Create Connection Failed!");
          ??????????? }
          ??????? } catch (Exception e) {
          ??????????? logger.warn("Create Connection Failed! -- " + e.getMessage());
          ??????? }
          ??????? return con;
          ??? }

          ??? /***************************************************************************
          ???? *
          ???? * release the connection
          ???? *?
          ???? **************************************************************************/

          ??? public synchronized void freeConnection(Connection conn, PreparedStatement pstmt) {
          ??????? try {
          ??????????? //close PreparedStatement
          ??????????? if (pstmt != null) {
          ??????????????? pstmt.close();
          ??????????????? pstmt = null;
          ??????????? }
          ??????? } catch (Exception e) {
          ??????????? logger.warn("release stmt,pstmt error! -- " + e.getMessage());
          ??????? }
          ??????? try {
          ??????????? //close Connection
          ??????????? if (conn != null) {
          ??????????????? conn.close();
          ??????????????? conn = null;
          ??????????? }
          ??????? } catch (SQLException e) {
          ??????????? logger.warn("release conn error! -- " + e.getMessage());
          ??????? }
          ??? }

          }
          ???

          posted @ 2006-01-19 10:04 十三郎 閱讀(1452) | 評論 (0)編輯 收藏

          在TOMCAT下JSP的中文處理解決方案

          方法一:new String(request.getParameter("test").getBytes("iso-8859-1"),"GBK")

          方法二:
          1、
          在jsp中加入下面兩行
                    <%@ page contentType="text/html; charset=GBK" language="java" %>
                    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
          2、
          在TOMCAT中找到SetCharacterEncodingFilter.java,他們位于D:\Tomcat5.0.27\webapps\jsp-examples\WEB-INF\classes\filters,加到你的工程文件里去,并修改包名。
          3、
          配置WEB.XML,
          在web.xml里加入這一段
           <filter>
              <filter-name>Set Character Encoding</filter-name>
              <filter-class>utils.SetCharacterEncodingFilter</filter-class>
              <init-param>
                <param-name>encoding</param-name>
                <param-value>GB2312</param-value>
              </init-param>
            </filter>
            <filter-mapping>
              <filter-name>Set Character Encoding</filter-name>
              <url-pattern>/*</url-pattern>
            </filter-mapping>
          4、修改server.xml中兩個部分
          <Connector port="8090"
                         maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                         enableLookups="false" redirectPort="8443" acceptCount="100"
                         debug="0" connectionTimeout="20000"
                         disableUploadTimeout="true" URIEncoding='GB2312'/>
          <Connector className="org.apache.coyote.tomcat5.CoyoteConnector"
                         port="8009" minProcessors="5" maxProcessors="75"
                         enableLookups="true" redirectPort="8443"
                         acceptCount="10" debug="0" connectionTimeout="0"
                         useURIValidationHack="false" protocol="AJP/1.3"
                        
          protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" 
                         URIEncoding='GB2312'/>

          posted @ 2006-01-09 10:46 十三郎 閱讀(237) | 評論 (0)編輯 收藏

          一些比較好的javascript

          1、window.opener.location.reload();
          當A頁面彈出B頁面時,在B頁面如果調用這句js代碼,則會刷新A頁面。

          posted @ 2005-12-23 16:49 十三郎 閱讀(421) | 評論 (1)編輯 收藏

          異常錯誤解決辦法,不斷更新新中......

          在用JAVA編寫程序時時常會遇到一些異常錯誤,本人把握以往遇到的異常及其解決辦法在此寫下來,不斷增加,希望其他朋友把自己遇到的一些異常解決方法根貼。

          1、 java.sql.SQLException: 操作不允許: Unsupported syntax for refreshRow()
          這個異常時在用純jsp分頁時遇到的,在這里會用到absolute(),isAfterLast()等方法,
          解決方法:
          statement=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

          posted @ 2005-12-15 14:28 十三郎 閱讀(506) | 評論 (0)編輯 收藏

          兩個漸變效果進度條

          請看效果 ,具體程序如下:

          <html>
          <head>
          <title>漸變效果進度條</title>
          <script language="javascript">
           var i;
           function go()
           {
            bar_width = document.getElementById("bg").clientWidth;
            i = bar_width;
            setTimeout('start();',300);
           }
           function start()
           {
            if(i-->0)
            {
             ps.style.width = i;
             bn.innerHTML = Math.floor((bar_width-i)/bar_width*100)+"%";
             setTimeout('start();',20);
            }
           }
           
          </script>
          <style type="text/css">
          #bg {
          filter:progid:DXImageTransform.Microsoft.Gradient
          (GradientType=1, StartColorStr=#FFFF00, EndColorStr=#FF0000);
          width:300px;
          height:20px;
          border:1px solid black;
          z-index:0;
          position:absolute;
          }
          #ps {
          float:right;
          background-color:#FFFF00;
          width:100%;
          }
          #bn {
          position:absolute;
          text-align:center;
          width:100%;
          height:100%;
          cursor:default;
          }
          </style>
          </head>
          <body onload="go();">
          <div id="bg"><div id="ps"></div><span id="bn">0%</span></div>
          </body>
          </html>


          請看效果 ,具體程序如下:

          <html>
          <head>
          <title>漸變效果進度條</title>
          <script language="javascript">
          var _Hex = Array("00","01","02","03","04","05","06","07","08","09",
          "0A","0B","0C","0D","0E","0F","10","11","12","13","14","15","16","17","18","19",
          "1A","1B","1C","1D","1E","1F","20","21","22","23","24","25","26","27","28","29",
          "2A","2B","2C","2D","2E","2F","30","31","32","33","34","35","36","37","38","39",
          "3A","3B","3C","3D","3E","3F","40","41","42","43","44","45","46","47","48","49",
          "4A","4B","4C","4D","4E","4F","50","51","52","53","54","55","56","57","58","59",
          "5A","5B","5C","5D","5E","5F","60","61","62","63","64","65","66","67","68","69",
          "6A","6B","6C","6D","6E","6F","70","71","72","73","74","75","76","77","78","79",
          "7A","7B","7C","7D","7E","7F","80","81","82","83","84","85","86","87","88","89",
          "8A","8B","8C","8D","8E","8F","90","91","92","93","94","95","96","97","98","99",
          "9A","9B","9C","9D","9E","9F","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9",
          "AA","AB","AC","AD","AE","AF","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9",
          "BA","BB","BC","BD","BE","BF","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9",
          "CA","CB","CC","CD","CE","CF","D0","D1","D2","D3","D4","D5","D6","D7","D8","D9",
          "DA","DB","DC","DD","DE","DF","E0","E1","E2","E3","E4","E5","E6","E7","E8","E9",
          "EA","EB","EC","ED","EE","EF","F0","F1","F2","F3","F4","F5","F6","F7","F8","F9",
          "FA","FB","FC","FD","FE","FF");
           function go()
           {
            setTimeout('start();',100);
           }
           var i=0;
           function start()
           {
            if(i++<256)
            {
             ps.innerHTML += "<span style='width:1px;background-color:#FF"+_Hex[256-i]+"00;'>";
             bn.innerHTML = Math.floor(i/2.56)+"%";
             setTimeout('start();',10);
            }
           }
           
          </script>
          <style type="text/css">
          #ps {
          background-color:#FFFF00;
          width:256px;
          margin: 1px;
          float:left;
          }
          #bn {
          width:39px;
          margin: 1px;
          float:right;
          text-align:center;
          color:#FFFFFF;
          font-family:Arial;
          font-size:13px;
          }
          </style>
          </head>
          <body onload="go();">

          <div style="background-color:black;width:300px;height:20px;"><div id="ps"></div><div id="bn"></div></div>
          </body>
          </html>

          posted @ 2005-11-29 10:24 十三郎 閱讀(570) | 評論 (0)編輯 收藏

          常用正則表達式

          非負整數(正整數 + 0)
          [^\\d+$] 

          正整數                 
          [^[0-9]*[1-9][0-9]*$]   

          非正整數(負整數 + 0)
          [^((-\\d+)|(0+))$]        

          負整數
          [^-[0-9]*[1-9][0-9]*$]  

          整數
          [^-?\\d+$]       

          非負浮點數(正浮點數 + 0)
          [^\\d+(
          \\.\\d+)?$]  

          正浮點數
          [^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$]  

          非正浮點數(負浮點數 + 0)
          [^((-\\d+(
          \\.\\d+)?)|(0+(\\.0+)?))$]  

          負浮點數
          [^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$]  

          浮點數
          [^(-?\\d+)(
          \\.\\d+)?$]  

          由26個英文字母組成的字符串
          [^[A-Za-z]+$]  

          由26個英文字母的大寫組成的字符串
          [^[A-Z]+$]  

          由26個英文字母的小寫組成的字符串
          [^[a-z]+$]  

          由數字和26個英文字母組成的字符串
          [^[A-Za-z0-9]+$]  

          由數字、26個英文字母或者下劃線組成的字符串
          [^\\w+$]  

          email地址
          [^[\\w-]+(
          \\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$]    

          url
          [^[a-zA-z]+://(
          \\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$]  


          匹配中文字符的正則表達式: [\u4e00-\u9fa5]
          匹配雙字節字符(包括漢字在內):[^\x00-\xff]


          中國電話號碼驗證
          匹配形式如:0511-4405222 或者021-87888822 或者 021-44055520-555 或者 (0511)4405222
          正則表達式 "((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*"

          中國郵政編碼驗證
          匹配形式如:215421
          正則表達式 "d{6}"

          電子郵件驗證
          匹配形式如:justali@justdn.com
          正則表達式 "w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*"

          身份證驗證
          匹配形式如:15位或者18位身份證
          正則表達式 "d{18}|d{15}"

          常用數字驗證
          正則表達式 
          "d{n}" n為規定長度
          "d{n,m}" n到m的長度范圍

          非法字符驗證
          匹配非法字符如:< > & / ' | 
          正則表達式 [^<>&/|'\]+

          日期驗證
          匹配形式如:20030718,030718
          范圍:1900--2099
          正則表達式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}

          posted @ 2005-11-29 09:54 十三郎 閱讀(447) | 評論 (0)編輯 收藏

          Java中一些關于日期、日期格式、日期的解析和日期的計算

               Java 語言的Calendar(日歷),Date(日期), 和DateFormat(日期格式)組成了Java標準的一個基本但是非常重要的部分. 日期是商業邏輯計算一個關鍵的部分. 所有的開發者都應該能夠計算未來的日期, 定制日期的顯示格式, 并將文本數據解析成日期對象.

              Date 類實際上只是一個包裹類, 它包含的是一個長整型數據, 表示的是從GMT(格林尼治標準時間)1970年, 1 月 1日00:00:00這一刻之前或者是之后經歷的毫秒數.

          一、創建一個日期對象
              使用系統的當前日期和時間創建一個日期對象并返回一個長整數的簡單例子. 這個時間通常被稱為Java 虛擬機(JVM)主機環境的系統時間.

          Date date = new Date();
          System.out.println(date.getTime());

              上面的例子在系統輸出設備上顯示的結果是 1001803809710. 在這個例子中,值得注意的是我們使用了Date 構造函數創建一個日期對象, 這個構造函數沒有接受任何參數. 而這個構造函數在內部使用了System.currentTimeMillis() 方法來從系統獲取日期.
          二、日期數據的定制格式
              定制日期數據的格式, 比方星期六-9月-29日-2001年. 下面的例子展示了如何完成這個工作:

          SimpleDateFormat bartDateFormat = new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
          Date date = new Date();
          System.out.println(bartDateFormat.format(date));

              只要通過向SimpleDateFormat 的構造函數傳遞格式字符串"EEE-MMMM-dd-yyyy", 我們就能夠指明自己想要的格式. 你應該可以看見, 格式字符串中的ASCII 字符告訴格式化函數下面顯示日期數據的哪一個部分. EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的個數決定了日期是如何格式化的.傳遞"EE-MM-dd-yy"會顯示 Sat-09-29-01.
              下面是一些格式:
          Date and Time Pattern Result
          "yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
          "EEE, MMM d, ''yy" Wed, Jul 4, '01
          "h:mm a" 12:08 PM
          "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
          "K:mm a, z" 0:08 PM, PDT
          "yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
          "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
          "yyMMddHHmmssZ" 010704120856-0700


          三、將文本數據解析成日期對象
              假設我們有一個文本字符串包含了一個格式化了的日期對象, 而我們希望解析這個字符串并從文本日期數據創建一個日期對象. 我們將再次以格式化字符串"MM-dd-yyyy" 調用SimpleDateFormat類, 但是這一次, 我們使用格式化解析而不是生成一個文本日期數據. 我們的例子, 顯示在下面, 將解析文本字符串"9-29-2001"并創建一個值為001736000000 的日期對象.

          SimpleDateFormat bartDateFormat = new SimpleDateFormat("MM-dd-yyyy");
          String dateStringToParse = "9-29-2001";
          try {
          Date date = bartDateFormat.parse(dateStringToParse);
          System.out.println(date.getTime());
          } catch (Exception ex) {
          System.out.println(ex.getMessage());
          }

          四、使用標準的日期格式化過程

          既然我們已經可以生成和解析定制的日期格式了, 讓我們來看一看如何使用內建的格式化過程. 方法 DateFormat.getDateTimeInstance() 讓我們得以用幾種不同的方法獲得標準的日期格式化過程. 在下面的例子中, 我們獲取了四個內建的日期格式化過程. 它們包括一個短的, 中等的, 長的, 和完整的日期格式.

          Date date = new Date();

          DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
          DateFormat mediumDateFormat =DateFormat.getDateTimeInstance( DateFormat.MEDIUM, teFormat.MEDIUM);
          DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); DateFormat fullDateFormat = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL);

          System.out.println(shortDateFormat.format(date));
          System.out.println(mediumDateFormat.format(date));
          System.out.println(longDateFormat.format(date));
          System.out.println(fullDateFormat.format(date));

          注意我們在對 getDateTimeInstance的每次調用中都傳遞了兩個值. 第一個參數是日期風格, 而第二個參數是時間風格. 它們都是基本數據類型int(整型). 考慮到可讀性, 我們使用了DateFormat 類提供的常量: SHORT, MEDIUM, LONG, 和 FULL.
          運行例子程序的時候, 它將向標準輸出設備輸出下面的內容:
          9/29/01 8:44 PM
          Sep 29, 2001 8:44:45 PM
          September 29, 2001 8:44:45 PM EDT
          Saturday, September 29, 2001 8:44:45 PM EDT

          五、Calendar 類

          假設你想要設置, 獲取, 和操縱一個日期對象的各個部分, 比方一個月的一天或者是一個星期的一天. 為了演示這個過程, 我們將使用具體的子類 java.util.GregorianCalendar. 考慮下面的例子, 它計算得到下面的第十個星期五是13號.


          DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);

          GregorianCalendar cal = new GregorianCalendar();

          cal.setTime(new Date());
          System.out.println("System Date: " + dateFormat.format(cal.getTime()));

          // Set the day of week to FRIDAY
          cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);
          System.out.println("After Setting Day of Week to Friday: " +
          dateFormat.format(cal.getTime()));

          int friday13Counter = 0;

          while (friday13Counter <= 10)
          {

          // Go to the next Friday by adding 7 days.
          cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

          // If the day of month is 13 we have
          // another Friday the 13th.
          if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13)
          {
          friday13Counter++;
          System.out.println(dateFormat.format(cal.getTime()));
          }
          }

          在這個例子中作了有趣的函數調用:
          cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);

          cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

          set 方法能夠讓我們通過簡單的設置星期中的哪一天這個域來將我們的時間調整為星期五. 注意到這里我們使用了常量 DAY_OF_WEEK 和 FRIDAY來增強代碼的可讀性. add 方法讓我們能夠在日期上加上數值. 潤年的所有復雜的計算都由這個方法自動處理.

          我們這個例子的輸出結果是:
          System Date: Saturday, September 29, 2001
          當我們將它設置成星期五以后就成了: Friday, September 28, 2001
          Friday, September 13, 2002
          Friday, December 13, 2002
          Friday, June 13, 2003
          Friday, February 13, 2004
          Friday, August 13, 2004
          Friday, May 13, 2005
          Friday, January 13, 2006
          Friday, October 13, 2006
          Friday, April 13, 2007
          Friday, July 13, 2007
          Friday, June 13, 2008

          GregorianCalendar類提供處理日期的方法。一個有用的方法是add().使用add()方法,你能夠增加象年,月數,天數到日期對象中。要使用add()方法,你必須提供要增加的字段,要增加的數量。一些有用的字段是DATE, MONTH, YEAR, 和 WEEK_OF_YEAR。下面的程序使用add()方法計算未來80天的一個日期。在Jules的<環球80天>是一個重要的數字,使用這個程序可以計算Phileas Fogg從出發的那一天1872年10月2日后80天的日期:

          GregorianCalendar worldTour = new GregorianCalendar(1872, Calendar.OCTOBER, 2);
          worldTour.add(GregorianCalendar.DATE, 80);
          Date d = worldTour.getTime();
          DateFormat df = DateFormat.getDateInstance();
          String s = df.format(d);
          System.out.println("80 day trip will end " + s);

          五、實現日期以天數的加減:
          /* 將當前日期加減n天數。
          * 如傳入字符型"-5" 意為將當前日期減去5天的日期
          * 如傳入字符型"5" 意為將當前日期加上5天后的日期
          * 返回字串 例(1999-02-03)
          */

          public String dateAdd(String to)
          {
          //日期處理模塊 (將日期加上某些天或減去天數)返回字符串
          int strTo;
          try {
             strTo = Integer.parseInt(to);}
          catch (Exception e) {
             System.out.println("日期標識轉換出錯! : \n:::" + to + "不能轉為數字型");
             e.printStackTrace();
             strTo = 0;
          }
          Calendar strDate = Calendar.getInstance(); //java.util包,設置當前時間
          strDate.add(strDate.DATE, strTo); //日期減 如果不夠減會將月變動 //生成 (年-月-日)
          String meStrDate = strDate.get(strDate.YEAR) + "-" +String.valueOf(strDate.get(strDate.MONTH)+1) + "-" + strDate.get(strDate.DATE);
          return meStrDate;
          }

          posted @ 2005-10-28 11:00 十三郎 閱讀(1063) | 評論 (0)編輯 收藏

          在HIBERNATE里投影查詢數據

              在數據庫中我們經常會用到類似這樣的sql語句:SELECT A,B,C FROM TABLE_A,在HIBERNATE里實現起來相比較而然,稍微復雜了一點。
              在HIBERNATE里語句應當這么來寫:SELECT tableA.a,tableA.b,tableA.c FROM tableA

              tableA-----------表TABLE_A對應的HIBERNATE的類名
              a,b,c-------------表TABLE_A里的三個列名對應的HIBERNATE的類的幾個屬性

              最后便是取出查詢的數據,整個返回值為Iterator,一行數據就是一個Object[]數組,數組里的每個變量對應tableA.a,tableA.b,tableA.c 的順序取出此行該列的數據值,然后根據tableA.a,tableA.b,tableA.c 在類里的類型在對其進行相應的強制類型轉換。
              但是在我測試時如果在語句中FROM之前用到一些類似TO_CHAR,DECODE的函數則就會報錯,提示沒有該列,也不能像tableA.a AS TP這樣來寫。如果有解決這種情況出現的問題的,請告知。

          posted @ 2005-10-25 14:57 十三郎 閱讀(1568) | 評論 (1)編輯 收藏

          主站蜘蛛池模板: 邵阳县| 宁城县| 正蓝旗| 金阳县| 盐源县| 和顺县| 蒙自县| 灵石县| 新宾| 松溪县| 蓝田县| 玉树县| 邻水| 达孜县| 平定县| 塘沽区| 娄底市| 东兴市| 喜德县| 长顺县| 班玛县| 砚山县| 荔浦县| 庆元县| 大丰市| 赤峰市| 民勤县| 四会市| 江陵县| 滦南县| 雅江县| 左权县| 潞西市| 东至县| 青川县| 尉犁县| 威海市| 兖州市| 石屏县| 台南市| 桐乡市|