<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Rising Sun

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks

    #

    準備工作:
    安裝tomcat5.5(注意這點)
    安裝mysql
    拷貝mysql驅(qū)動到tomcat_home/common/lib下
    新建一個web工程
    在工程中加入index.jsp


    <%@page import="java.util.*,javax.naming.*,java.sql.*,javax.sql.*" %>
    <%@page contentType="text/html;charset=BIG5"%>
    <%    
        Context ctx 
    = new InitialContext();      
        String strLookup 
    = "java:comp/env/jdbc/test"
        DataSource ds 
    =(DataSource) ctx.lookup(strLookup);
        Connection con 
    = ds.getConnection();
        
    if (con != null){
            out.print(
    "success");
        }
    else{
            out.print(
    "failure");
        }
           
    %>

    web.xml中加入

    <resource-ref>
        
    <res-ref-name>jdbc/test</res-ref-name>
        
    <res-type>javax.sql.DataSource</res-type>
        
    <res-auth>Container</res-auth>
        
    <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

    配置tomcat
    這一步的目的就是告訴tomcat如何連接數(shù)據(jù)庫
    可以分為兩種大的類型,每種類型又有很多種配置方式
    配置類型一;
    (直接配置的類型,這種方式最簡單)

    方法一:
    直接在tomcat_home/conf/localhost/下建立一個xml文件,文件名是<yourAppName>.xml
    例如我的工程名叫jndi,對應的名字叫jdni.xml
    內(nèi)容如下:

    <Context>
     
    <Resource
              name
    ="jdbc/test"
              type
    ="javax.sql.DataSource"
              password
    ="bb"
              driverClassName
    ="com.mysql.jdbc.Driver"
              maxIdle
    ="2"
              maxWait
    ="50"
              username
    ="root"
              url
    ="jdbc:mysql://localhost:3306/test"
              maxActive
    ="4"/>
    </Context>

    方法二:
    只需在tomcat_home\webapps\myapps\META-INF\context.xml中增加:
    <context>
    <Resource
              name
    ="jdbc/test"
              type
    ="javax.sql.DataSource"
              password
    ="bb"
              driverClassName
    ="com.mysql.jdbc.Driver"
              maxIdle
    ="2"
              maxWait
    ="50"
              username
    ="root"
              url
    ="jdbc:mysql://localhost:3306/test"
              maxActive
    ="4"/>
    </context>


    說明:這種配置需要告訴tomcat resource的內(nèi)容,resource應用于什么地方
    第一種方法通過文件名知道了app的name
    第二種方式本身就在app內(nèi)部,所以name肯定知道
    兩種方式都要放在context中

    配置類型二:
    (配置全局resource,然后通過resourcelink來映射)

    步驟一:配置全局resource(這一步對于所有的配置都是一樣的)
    打開tomcat_home/conf/server.xml加入

    <Resource
              name
    ="jdbc/test"
              type
    ="javax.sql.DataSource"
              password
    ="bb"
              driverClassName
    ="com.mysql.jdbc.Driver"
              maxIdle
    ="2"
              maxWait
    ="50"
              username
    ="root"
              url
    ="jdbc:mysql://localhost:3306/test"
              maxActive
    ="4"/>


    步驟二:映射
    (映射可以配置在多個地方,也就有多個配置方法:)

    方法一:(對比類型一的配置理解)
    直接在tomcat_home/conf/localhost/下建立一個xml文件,文件名是<yourAppName>.xml
    例如我的工程名叫jndi,對應的名字叫jdni.xml加入如下內(nèi)容

    <Context>
    <ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>
    </Context>

    方法二:(對比類型一的配置理解)
    在tomcat_home\webapps\myapps\META-INF\context.xml的Context中增加:


    <context>
    <ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/> 
    </context>


    方法三:(上邊兩種方法都是把全局的resource 映射給jndi這個web應用,第三種方法就是把這個
    全局的resource直接公開給所有的應用)
    在tomcat_home/conf/context.xml的<Context></context>之間加入
    <ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/>


    運行測試:
    打開ie,輸入http://localhost:8080/jndi/index.jsp
    看到success

    常見錯誤:
    1,Name jdbc is not bound in this Context
    2,Cannot create JDBC driver of class '' for connect URL 'null' conf localhost
    原因:
    大多數(shù)是因為配置了全局的resource,但沒有l(wèi)ink造成的。
    解決:
    加入link就行了,link的方式見類型二的三種方法。

    分析:
    看到上邊這么多方法,是否感覺眼花繚亂,其實不要死記配置,按照原理分析一下就好了。
    你需要的是告訴tomcat哪個應用如何連接數(shù)據(jù)庫。

    類型一的方式對應一個應用單獨使用這個配置的情況
    就是直接告訴tomcat"應用名"  "連接數(shù)據(jù)庫需要的參數(shù)"

    類型二的方式對應多個應用共享一個配置的情況
    這樣先配置server.xml告訴tomcat全局范圍的"連接數(shù)據(jù)庫需要的參數(shù)"
    然后映射,映射的時候
    1,如果不知道"app name(應用名)"就只需要通過文件名來傳遞這個信息
    2,如果"app name"都知道就只需要加入映射的內(nèi)容
    3,如果要配置成全局公用的,就不需要"app name",本身放在tomcat的context.xml中

    最后再次提醒一下:所有的配置必須放在<context></context>之間 

    posted @ 2008-08-06 12:52 brock 閱讀(178) | 評論 (0)編輯 收藏

    我這有個系統(tǒng)是以tomcat5.5+sqlserver2000配置的。我將tomcat使用的初始內(nèi)存和最大內(nèi)存分別設(shè)置為100M和1024M,然后通過server.xml修改相關(guān)的線程數(shù),但minSpareThreads和maxSpareThreads設(shè)置的很大或者應經(jīng)足夠小了,通過壓力測試,看tomcat5.exe進程占用的內(nèi)存數(shù)的走向圖沒有什么變化,比如通過壓力測試可以使tomcat占到最大800M內(nèi)存,而壓力測試過后放置一晚上tomcat會回落并一直保持在600M。
    但通過下面的解釋tomcat占用的內(nèi)存是否應該有變化
    minSpareThreads Tomcat初始化時創(chuàng)建的線程數(shù)。
    maxSpareThreads 一旦創(chuàng)建的線程超過這個值,Tomcat就會關(guān)閉不再需要
    的socket線程。

    下面是我分別設(shè)置的線程參數(shù)

    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="9080"
    maxHttpHeaderSize="8192"
    maxThreads="10000" minSpareThreads="1000" maxSpareThreads="2000"
    enableLookups="false" redirectPort="8443" acceptCount="10000"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>



    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="9080"
    maxHttpHeaderSize="8192"
    maxThreads="10000" minSpareThreads="50" maxSpareThreads="100"
    enableLookups="false" redirectPort="8443" acceptCount="10000"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
    posted @ 2008-07-31 15:10 brock 閱讀(714) | 評論 (0)編輯 收藏

    . 條件標簽
        JSTL: 
     1 <c:if test="${user.password == 'hello'}">
     2     <c:choose>
     3         <c:when test="${user.age <= 18}">
     4             <font color="blue" />
     5         </c:when>
     6         <c:when test="${user.age <= 30 && user.age > 18}">
     7             <font color="red" />
     8         </c:when>
     9         <c:otherwise>
    10             <font color="green" />
    11         </c:otherwise>
    12     </c:choose>
    13 </c:if>
        Struts2:
    1 <s:if test="#user.age <= 18">
    2     <font color="blue" />
    3 </s:if>
    4 <s:elseif test="#user.age <= 30 && user.age > 18">
    5     <font color="red" />
    6 </s:elseif>
    7     <font color="green" />
    8 </s:else>

    2. 迭代標簽
        JSTL:
    1 <c:forEach var="user" items="${users}">
    2     <c:out value="${user.userName}" />
    3 </c:forEach>
    4 <!-- 迭代固定次數(shù) -->
    5 <c:forEach var="i" begin="1" end="10" step="3">
    6     <c:out value="${i}" />
    7 </c:forEach>
    8 <!-- 這種循環(huán)相當于for(int i=1; i<10; i++), 其中step是指迭代的步長,默認為1. -->
        Struts2:
    1 <s:iterator value="#users" status="stuts">                
    2     <s:if test="#stuts.odd == true">   <!-- 判斷是否為奇數(shù)行 -->
    3         <s:property value="userName" />
    4     </s:if>
    5     <s:else>
    6         <s:property value="passWord" />
    7     </s:else>
    8 </s:iterator>

    3. URL相關(guān)標簽
        JSTL:
     1 <!-- 絕對路徑 -->
     2 <c:import url="http://127.0.0.1:8080/hello/hello.jsp" />
     3 <!-- 相對路徑 -->
     4 <c:import url="hello.jsp" />
     5 <!-- Encode -->
     6 <href="<c:url value='hello.jsp'><c:param name='userName' value='cyanbomb' /></c:url>"></a>
     7 <!-- 傳遞參數(shù)到指定的URL -->
     8 <c:import url="hello.jsp" charEncoding="gb2312" >
     9     <c:param name="userName" value="cyanbomb" />
    10 </c:import>
    11 <!-- URL重定向 -->
    12 <c:redirect url="${myurl}" />
    13 <!-- 構(gòu)造URL -->
    14 <c:url value="myurl" var="hello.jsp" scope="session">
    15     <c:param name="userName" value="cyanbomb" />
    16 </c:url>
        Struts2:
    1 <href='<s:url value="/hello.jsp" />'>Hello</a><br />
    2 <s:url id="url" value="/hello.jsp">
    3     <s:param name="name">cyanbomb</s:param>
    4 </s:url>        
    5 <s:a href="%{url}">Hello</s:a>

    解除的疑問,list遍歷問題

    像這樣一個list,里面有3條記錄,每條記錄包含兩個對象,我把結(jié)果集(lstRooms)request到了頁面,想遍歷顯示RrmRooms里的id,和RrmRoomType里的name.
    我用JSTL實現(xiàn)如下:
    1 <table>
    2     <c:forEach var="rm" items="${lstRooms}">
    3         <tr>
    4             <td>${rm[0].id}</td>
    5             <td>${rm[1].name}</td>
    6         <tr>
    7     </c:forEach>
    8 </table>
    STRUTS2實現(xiàn)如下:
    1<table>
    2     <s:iterator value="#lstRooms" status="stat">
    3         <tr>
    4             <td><s:property value="#lstRooms[#stat.index][0].id" /></td>
    5             <td><s:property value="#lstRooms[#stat.index][1].name" /></td>
    6         <tr>
    7     </s:iterator>
    8</table>
    posted @ 2008-07-30 09:02 brock 閱讀(290) | 評論 (0)編輯 收藏

    利用w3c的dom:

     

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder builder;
      
    try   {
       builder 
    =  factory.newDocumentBuilder();
       Document doc 
    =  builder.parse( new  ByteArrayInputStream(str.getBytes())); 
      }
      catch  (ParserConfigurationException e)  {
       
    //  TODO Auto-generated catch block
       e.printStackTrace();
      }
      catch  (SAXException e)  {
       
    //  TODO Auto-generated catch block
       e.printStackTrace();
      }
      catch  (IOException e)  {
       
    //  TODO Auto-generated catch block
       e.printStackTrace();
      }
     


    利用1 dom4j

    SAXReader saxReader = new SAXReader();
            Document document;
            
    try {
                document 
    = saxReader.read(new ByteArrayInputStream(str.getBytes()));
                Element incomingForm 
    = document.getRootElement();
            }
     catch (DocumentException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }


    利用 2 dom4j :


    String text = "<person> <name>James</name> </person>";
    Document document = DocumentHelper.parseText(text);
    posted @ 2008-07-29 11:17 brock 閱讀(171) | 評論 (0)編輯 收藏

    Weblogic 中報Ora-01483

    數(shù)據(jù)庫 oralce 9i 版本9.2.0.1.0
    Server: Weblogic 814
    數(shù)據(jù)庫連接方式:Hibernate3+DataSource + ConnectionPool

    問題:
    往數(shù)據(jù)庫中某表插入Blog對象時偶爾(并不是每次都,現(xiàn)象是第一次不出錯,之后每次都出錯)出錯,錯誤異常:
    {org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Could not execute JDBC batch update: encountered SQLException [ORA-01483: invalid length for DATE or NUMBER bind variable]; nested exception is java.sql.BatchUpdateException: ORA-01483: invalid length for DATE or NUMBER bind variable.
    java.sql.BatchUpdateException: ORA-01483: invalid length for DATE or NUMBER bind variable

    原因分析:
    出現(xiàn)這個問題后,使用spring提供的org.springframework.jdbc.datasource.DriverManagerDataSource連數(shù)據(jù)庫執(zhí)行相同的操作并沒有問題,由于使用的是server上配置的DataSource+ConnectionPool,數(shù)據(jù)庫驅(qū)動的獲取是server選擇的。經(jīng)查找,server選擇的是%bea_home%/weblogic81/server/lib/ojdbc14.jar (version 10.1.0.6.0)。用類路徑里的驅(qū)動替代,該問題不再出現(xiàn)。

    解決辦法:使用version為10.1.0.4.0的ojdbc.jar代替%bea_home%/weblogic81/server/lib/ojdbc14.jar。

    轉(zhuǎn)載 
    我的weblogic9
    ojdbc14.jar 從orcale 10中找一個來odbc14.jar
    posted @ 2008-05-04 17:12 brock 閱讀(2343) | 評論 (0)編輯 收藏

    oracle的分析函數(shù)over 及開窗函數(shù)
    一:分析函數(shù)over
    Oracle從8.1.6開始提供分析函數(shù),分析函數(shù)用于計算基于組的某種聚合值,它和聚合函數(shù)的不同之處是
    對于每個組返回多行,而聚合函數(shù)對于每個組只返回一行。
    下面通過幾個例子來說明其應用。                                       
    1:統(tǒng)計某商店的營業(yè)額。        
         date       sale
         1           20
         2           15
         3           14
         4           18
         5           30
        規(guī)則:按天統(tǒng)計:每天都統(tǒng)計前面幾天的總額
        得到的結(jié)果:
        DATE   SALE       SUM
        ----- -------- ------
        1      20        20           --1天           
        2      15        35           --1天+2天           
        3      14        49           --1天+2天+3天           
        4      18        67            .          
        5      30        97            .
         
    2:統(tǒng)計各班成績第一名的同學信息
        NAME   CLASS S                         
        ----- ----- ----------------------
        fda    1      80                     
        ffd    1      78                     
        dss    1      95                     
        cfe    2      74                     
        gds    2      92                     
        gf     3      99                     
        ddd    3      99                     
        adf    3      45                     
        asdf   3      55                     
        3dd    3      78              
       
        通過:   
        --
        select * from                                                                       
        (                                                                            
        select name,class,s,rank()over(partition by class order by s desc) mm from t2
        )                                                                            
        where mm=1
        --
        得到結(jié)果:
        NAME   CLASS S                       MM                                                                                        
        ----- ----- ---------------------- ----------------------
        dss    1      95                      1                      
        gds    2      92                      1                      
        gf     3      99                      1                      
        ddd    3      99                      1          
       
        注意:
        1.在求第一名成績的時候,不能用row_number(),因為如果同班有兩個并列第一,row_number()只返回一個結(jié)果          
        2.rank()和dense_rank()的區(qū)別是:
          --rank()是跳躍排序,有兩個第二名時接下來就是第四名
          --dense_rank()l是連續(xù)排序,有兩個第二名時仍然跟著第三名
         
         
    3.分類統(tǒng)計 (并顯示信息)
        A   B   C                      
        -- -- ----------------------
        m   a   2                      
        n   a   3                      
        m   a   2                      
        n   b   2                      
        n   b   1                      
        x   b   3                      
        x   b   2                      
        x   b   4                      
        h   b   3
       select a,c,sum(c)over(partition by a) from t2                
       得到結(jié)果:
       A   B   C        SUM(C)OVER(PARTITIONBYA)      
       -- -- ------- ------------------------
       h   b   3        3                        
       m   a   2        4                        
       m   a   2        4                        
       n   a   3        6                        
       n   b   2        6                        
       n   b   1        6                        
       x   b   3        9                        
       x   b   2        9                        
       x   b   4        9                        
      
       如果用sum,group by 則只能得到
       A   SUM(C)                            
       -- ----------------------
       h   3                      
       m   4                      
       n   6                      
       x   9                      
       無法得到B列值       
      
    =====

    select * from test

    數(shù)據(jù):
    A B C
    1 1 1
    1 2 2
    1 3 3
    2 2 5
    3 4 6


    ---將B欄位值相同的對應的C 欄位值加總
    select a,b,c, SUM(C) OVER (PARTITION BY B) C_Sum
    from test

    A B C C_SUM
    1 1 1 1
    1 2 2 7
    2 2 5 7
    1 3 3 3
    3 4 6 6



    ---如果不需要已某個欄位的值分割,那就要用 null

    eg: 就是將C的欄位值summary 放在每行后面

    select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sum
    from test

    A B C C_SUM
    1 1 1 17
    1 2 2 17
    1 3 3 17
    2 2 5 17
    3 4 6 17

     

    求個人工資占部門工資的百分比

    SQL> select * from salary;

    NAME DEPT SAL
    ---------- ---- -----
    a 10 2000
    b 10 3000
    c 10 5000
    d 20 4000

    SQL> select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;

    NAME DEPT SAL PERCENT
    ---------- ---- ----- ----------
    a 10 2000 20
    b 10 3000 30
    c 10 5000 50
    d 20 4000 100

    二:開窗函數(shù)           
          開窗函數(shù)指定了分析函數(shù)工作的數(shù)據(jù)窗口大小,這個數(shù)據(jù)窗口大小可能會隨著行的變化而變化,舉例如下:
    1:     
       over(order by salary) 按照salary排序進行累計,order by是個默認的開窗函數(shù)
       over(partition by deptno)按照部門分區(qū)
    2:
      over(order by salary range between 5 preceding and 5 following)
       每行對應的數(shù)據(jù)窗口是之前行幅度值不超過5,之后行幅度值不超過5
       例如:對于以下列
         aa
         1
         2
         2
         2
         3
         4
         5
         6
         7
         9
       
       sum(aa)over(order by aa range between 2 preceding and 2 following)
       得出的結(jié)果是
                AA                       SUM
                ---------------------- -------------------------------------------------------
                1                       10                                                      
                2                       14                                                      
                2                       14                                                      
                2                       14                                                      
                3                       18                                                      
                4                       18                                                      
                5                       22                                                      
                6                       18                                                                
                7                       22                                                                
                9                       9                                                                 
                 
       就是說,對于aa=5的一行 ,sum為   5-1<=aa<=5+2 的和
       對于aa=2來說 ,sum=1+2+2+2+3+4=14     ;
       又如 對于aa=9 ,9-1<=aa<=9+2 只有9一個數(shù),所以sum=9    ;
                  
    3:其它:
         over(order by salary rows between 2 preceding and 4 following)
              每行對應的數(shù)據(jù)窗口是之前2行,之后4行
    4:下面三條語句等效:           
         over(order by salary rows between unbounded preceding and unbounded following)
              每行對應的數(shù)據(jù)窗口是從第一行到最后一行,等效:
         over(order by salary range between unbounded preceding and unbounded following)
               等效
         over(partition by null)
    posted @ 2007-11-26 10:54 brock 閱讀(489) | 評論 (0)編輯 收藏

    在JDK1.4中使用JAXP1.3
    由于JDK1.5以上已經(jīng)自帶jaxp了,而jdk1.4以下版本需要自己添加jaxp庫文件。
     
    1。下載
    因為jwsdp-1.5中帶的jaxp是1.26版本,因此需要單獨重新下載jaxp
    https://jaxp.dev.java.net/files/documents/913/7831/JAXP_RI_20041025.class
     
    參考:
    https://jaxp.dev.java.net
    http://java.sun.com/xml/jaxp/index.jsp
     
    2.安裝:
    JAXP_RI_20041025.class所在的目錄下,進入命令行,
    運行:java -cp . JAXP_RI_20041025
    然后屏幕上列出所有解壓出來的文件名字。
    此時,在當前目錄下會有一個叫jaxp-1_3的目錄,里面有jaxp的jar文件和api文檔。
     
    3.jaxp需要用到的jar為(都在jaxp-1_3目錄下):
    dom.jar,jaxp-api.jar,sax.jar,xalan.jar,xercesImpl.jar
     
    4.接下來就可以根據(jù)自己需要來使用jaxp1.3了
     
    5.由于sun默認使用的解析器是經(jīng)過其包裝后的(基于Xerces version 2.6.0 和 XSLTC version 2.5.2),比如:
    com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl(可查看javax.xml.parsers.SAXParserFactory 的源代碼),
    com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl(可查看javax.xml.transform.TransformerFactory 的源代碼).
    因此在需要使用其它解析器的時候,需要通過設(shè)置系統(tǒng)屬性值的方式,
    或者在$java.home/lib/jaxp.properties進行配置($java.home為System.getProperty("java.home")所得到的路徑,具體可以查看javax.xml.parsers.FactoryFinder源代碼中的 static Object find(String factoryId, String fallbackClassName) 方法)來選擇具體的解析器實現(xiàn)。
    jaxp.properties中支持以下屬性.
     
    示例文件如下(實際就是jaxp的默認值):
    javax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
    javax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
    javax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl
     
    假如需要使用apache的解析器,那么如下操作 。
    a.下載http://www.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.6.2.zip
    http://www.eu.apache.org/dist/xml/xalan-j/binaries/xalan-j_2_6_0-bin.zip
    (均為當前最新版本)
    b.解壓獲得相應的jar文件,放入classpath中。
    3.配置jaxp.properties為:
    javax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl
    #也可以使用
    #javax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl
    javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
    javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
    javax.xml.datatype.DatatypeFactory=org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl
     
     
     
     
     
    6.需要關(guān)于jaxp的調(diào)試信息,設(shè)置系統(tǒng)屬性jaxp.debug為1即可
       System.setProperty("jaxp.debug","1");
    或者運行時的命令為: java -Djaxp.debug=1 com.lizongbo.TestJAXP
     
     
     
    幾篇非常好的資料:
     
    JAXP 專述 Sun 的 Java API for XML 語法分析
    JAXP 再述 Sun 的 Java API for XML Parsing,1.1 版
    http://www-128.ibm.com/developerworks/cn/xml/jaxp1/index.html
     
    JAXP 1.3 的新特性,第 1 部分
    技術(shù)綜述,考察解析 API 的變化和新的驗證 API
    http://www-128.ibm.com/developerworks/cn/xml/x-jaxp13a.html
    JAXP 1.3 的新特性,第 2 部分
    XPath 功能、支持名稱空間的工具和其他改進
    http://www-128.ibm.com/developerworks/cn/xml/x-jaxp13b.html
    JAXP 全面介紹,第 1 部分
    XML 處理工具包使解析和驗證變得更容易
    http://www-128.ibm.com/developerworks/cn/xml/x-jaxp/index.html
     
    Factory模式和Abstract Factory模式
    http://www.netbei.com/Article/jsp/jsp6/200409/2771.html
     
    Java中關(guān)于XML的API一瞥
    http://www.matrix.org.cn/article/1073.html
     
     


    Trackback: http://tb.donews.net/TrackBack.aspx?PostId=418679

    posted @ 2007-10-31 14:51 brock 閱讀(295) | 評論 (0)編輯 收藏

     1select
     2 a.tsjbxx_djrq,
     3 b.sqxz_desc,
     4 a.TSJBXX_TSNR,
     5 a.TSJBXX_SSQX,
     6 c.wtxz_mc,
     7 decode(a.tsjbxx_Bjcsjg,'01','結(jié)案',
     8        '02','跟蹤',
     9        '03','改派',
    10        '04','續(xù)辦',
    11        '05','督辦',
    12        a.tsjbxx_Bjcsjg) tsjbxx_Bjcsjg
    13
    14/*
    15(CASE 
    16WHEN a.TSJBXX_BJCSJG='01' THEN '結(jié)案'
    17WHEN a.TSJBXX_BJCSJG='02' THEN '跟蹤'
    18WHEN a.TSJBXX_BJCSJG='03' THEN '改派'
    19ELSE a.tsjbxx_Bjcsjg
    20END
    21)
    22*/

    23
    24from tsgl_tsjbxx a ,code_sqxz b , code_wtxz c
    25
    26where a.Tsjbxx_Wgxzfl= b.sqxz_code(+)
    27       and  a.TSJBXX_WGWTFL=c.wtxz_id(+)



    ------------------------------------
    --select DISTINCT t.tsjbxx_blbm  from tsgl_tsjbxx t
    --select  t.tsjbxx_blbm  from tsgl_tsjbxx t group by tsjbxx_blbm
    --------------------------------------------
    posted @ 2007-10-30 12:07 brock 閱讀(154) | 評論 (0)編輯 收藏

     

    問?: 
    表:
    col1 col2 col3
    1.5 a
    1.5 b
    2.5 c
    2.5 d
    5.5 e
    5.5 f
    1.2 g
    1.2 h
    1.2 i
    1.1 j

    我想取得這樣的結(jié)果:
    1.5 a,b
    2.5 c,d
    1.1 J
    1.2 i
    5.5 e,f
    1.2 h

    也就是按col1、col2分組統(tǒng)計,將col3的值用“,”連接起來。

    其中col1 是 字符型 col2是數(shù)字型。這兩個字段的唯一值的個數(shù)是未知的

    不知該如何才能做到,請各位高手幫忙。


    答?。?nbsp;
    1:
    id name
    1 aa
    2 bb
    3 cc
    4 dd
    1 ee
    1 xxx
    ID相同的行只顯示一條記錄并把相同ID的NAME加起來用,隔開
    怎么搞
    ???
    我需要的結(jié)果集是: 
    id name
    1 aa,ee,xxx
    2 bb
    3 cc
    4 dd
    ---------------------------------
    假設(shè)你的table 是 tmp_1;
    --------------------------------------------
    create table tmp_2 as select 
    * from tmp_1 where 1=2;
    insert into tmp_2 select distinct id,
    null from tmp_1;
    declare
    i number(
    4);
    cursor c_v is select 
    * from ttmp_1;
    begin 
    for v_n in c loop
    select count(
    *) into i from ttmp_2 b where b.name is not null and b.id=v_n.id;
    if i=0 then
    update ttmp_2 a set name 
    = v_n.name where a.id=v_n.id;
    else
    update ttmp_2 a set name 
    = name||','||v_n.name where a.id=v_n.id;
    end 
    if;
    end loop;
    end;
    /
    ------------------------------------
    或許以下的更有幫助

    給你看看duanzilin (尋)的文章吧,一個強貼,地址忘記了,還好有保存


    主  題: 原創(chuàng)+突發(fā)奇想+分享+散分-----關(guān)于分組后字段拼接的問題

    作  者: duanzilin (尋) 
    信 譽 值: 
    120 
    所屬論壇: Oracle 基礎(chǔ)和管理 
    問題點數(shù): 
    200 
    回復次數(shù): 
    29 
    發(fā)表時間: 
    2005-7-22 11:52:56 





    最近在論壇上,經(jīng)常會看到關(guān)于分組后字段拼接的問題,
    大概是類似下列的情形:
    SQL
    > select no,q from test
    2 /

    NO Q
    ---------- ------------------------------
    001 n1
    001 n2
    001 n3
    001 n4
    001 n5
    002 m1
    003 t1
    003 t2
    003 t3
    003 t4
    003 t5
    003 t6

    12 rows selected

    最后要得到類似于如下的結(jié)果:
    001 n1;n2;n3;n4;n5
    002 m1
    003 t1;t2;t3;t4;t5;t6

    通常大家都認為這類問題無法用一句SQL解決,本來我也這么認為,可是今天無意中突然有了靈感,原來是可以這么做的:
    前幾天有人提到過sys_connect_by_path的用法,我想這里是不是也能用到這個方法,如果能做到的話,不用函數(shù)或存貯過程也可以做到了;要用到sys_connect_by_path,首先要自己構(gòu)建樹型的結(jié)構(gòu),并且樹的每個分支都是單根的,例如1
    -2-3-4,不會存在1-2,1-〉3的情況;
    我是這么構(gòu)建樹,很簡單的,看下面的結(jié)果就會知道了:
    SQL
    > select no,q,rn,lead(rn) over(partition by no order by rn) rn1
    2 from (select no,q,row_number() over(order by no,q desc) rn from test)
    3 /

    NO Q RN RN1
    ---------- ------------------------------ ---------- ----------
    001 n5 1 2
    001 n4 2 3
    001 n3 3 4
    001 n2 4 5
    001 n1 5 
    002 m1 6 
    003 t6 7 8
    003 t5 8 9
    003 t4 9 10
    003 t3 10 11
    003 t2 11 12
    003 t1 12 

    12 rows selected

    有了這個樹型的結(jié)構(gòu),接下來的事就好辦了,只要取出擁有全路徑的那個path,問題就解決了,先看no
    =001’的分組:
    select no,sys_connect_by_path(q,
    ';') result from 
    (select no,q,rn,lead(rn) over(partition by no order by rn) rn1 
    from (select no,q,row_number() over(order by no,q desc) rn from test)
    )
    start with no 
    = '001' and rn1 is null connect by rn1 = prior rn
    SQL
    > 
    6 /

    NO RESULT
    ---------- --------------------------------------------------------------------------------
    001 ;n1
    001 ;n1;n2
    001 ;n1;n2;n3
    001 ;n1;n2;n3;n4
    001 ;n1;n2;n3;n4;n5

    上面結(jié)果的最后1條就是我們要得結(jié)果了
    要得到每組的結(jié)果,可以下面這樣

    select t.
    *,
    (
    select max(sys_connect_by_path(q,
    ';')) result from 
    (select no,q,rn,lead(rn) over(partition by no order by rn) rn1 
    from (select no,q,row_number() over(order by no,q desc) rn from test)
    )
    start with no 
    = t.no and rn1 is null connect by rn1 = prior rn
    ) value
    from (select distinct no from test) t

    SQL
    > 
    10 /

    NO VALUE
    ---------- --------------------------------------------------------------------------------
    001 ;n1;n2;n3;n4;n5
    002 ;m1
    003 ;t1;t2;t3;t4;t5;t6

    對上面結(jié)果稍加處理就可以了,希望對大家有幫助:) 
    答?。?nbsp;
    2:
    注意注意 

    sys_connect_by_path有長度限制,不能超過4K 
    posted @ 2007-09-13 10:14 brock 閱讀(551) | 評論 (0)編輯 收藏

    1問題: hibernate不用外鍵作查詢:
    1.1最終解辦法: 利用hibernate 的視圖功能
    Hibernate3增加了視圖功能

    1. 定義hbm

        <class name="Customer" table="customer">        
            
    <id name="id" unsaved-value="0" column="id">
                
    <generator class="hilo"/>
            
    </id>        
            
    <property name="name"  not-null="true"/>        
        
    </class>
        
        
    <class name="Supplier" table="supplier">        
            
    <id name="id" unsaved-value="0" column="id">
                
    <generator class="hilo"/>
            
    </id>
            
    <property name="name" not-null="true"/>            
        
    </class>
        
        
    <class name="All" mutable="false">    
            <subselect>
                select id, name from customer
                union 
                select id, name from supplier
            
    </subselect>
            
            
    <synchronize table="customer"/>
            
    <synchronize table="supplier"/>
            
            
    <id name="id" unsaved-value="0" column="id">
                
    <generator class="hilo"/>
            
    </id>        
            
    <property name="name"/>        
        
    </class>


    2. 定義POJO

    pulic class Customer {
        
    public Integer id;
        
    public String name;
    }


    pulic 
    class Supplier {
        
    public Integer id;
        
    public String name;
    }


    pulic 
    class All {
        
    public Integer id;
        
    public String name;
    }


    3. 查詢

    List all = session.createQuery("from All").list();
    注意:黃色地區(qū)


    解決辦法二

    1.2 在數(shù)據(jù)表里 建視圖, 把視圖當表操作.

    解決辦法三
    1.3 設(shè)外鍵=沒說,,哈哈

    總結(jié),不用外鍵.為了建表方便.  

    To Be Continued……



    posted @ 2007-09-04 11:02 brock 閱讀(310) | 評論 (0)編輯 收藏

    僅列出標題
    共15頁: First 上一頁 5 6 7 8 9 10 11 12 13 下一頁 Last 
    主站蜘蛛池模板: 亚洲午夜精品一区二区| 亚洲一区视频在线播放| 国产精品jizz在线观看免费| 亚洲国产成人久久精品99| 久久久久国产成人精品亚洲午夜| 国产成人精品日本亚洲专区61| 亚洲AV成人精品网站在线播放 | 亚洲成a人片在线播放| 中文字幕亚洲图片| 久久久久亚洲精品无码蜜桃| 亚洲熟妇AV一区二区三区浪潮| 特级毛片免费观看视频| 精品在线免费观看| 成人毛片免费观看视频在线| 伊人久久亚洲综合影院| 久久综合日韩亚洲精品色| 精品久久亚洲中文无码| 一级看片免费视频| 69视频在线是免费观看| 国产精品久久免费视频| 亚洲AV乱码一区二区三区林ゆな| 免费A级毛片无码无遮挡内射| 免费在线黄色网址| 久久亚洲私人国产精品| 美女18一级毛片免费看| 久久综合给合久久国产免费| 日韩免费a级在线观看| 亚洲av一综合av一区| 亚洲av无码专区在线观看亚| 99在线免费视频| 四虎影院免费视频| 九月丁香婷婷亚洲综合色| 亚洲成在人线在线播放无码| 国产永久免费高清在线| 日韩高清免费在线观看| 久久精品亚洲中文字幕无码网站| 亚洲AV无码国产剧情| 4444www免费看| 久久久久噜噜噜亚洲熟女综合| 亚洲一区免费在线观看| 西西人体免费视频|