﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-每天进步一点点</title><link>http://www.blogjava.net/sunjavaee/</link><description>每天进步一点点</description><language>zh-cn</language><lastBuildDate>Sun, 19 Apr 2026 19:44:40 GMT</lastBuildDate><pubDate>Sun, 19 Apr 2026 19:44:40 GMT</pubDate><ttl>60</ttl><item><title>婚前保证书</title><link>http://www.blogjava.net/sunjavaee/archive/2008/01/16/175750.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Wed, 16 Jan 2008 11:06:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2008/01/16/175750.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/175750.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2008/01/16/175750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/175750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/175750.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/sunjavaee/archive/2008/01/16/175750.html'>阅读全文</a><img src ="http://www.blogjava.net/sunjavaee/aggbug/175750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2008-01-16 19:06 <a href="http://www.blogjava.net/sunjavaee/archive/2008/01/16/175750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中DecimalFormat </title><link>http://www.blogjava.net/sunjavaee/archive/2006/08/23/65263.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Wed, 23 Aug 2006 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/08/23/65263.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/65263.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/08/23/65263.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/65263.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/65263.html</trackback:ping><description><![CDATA[
		<p>在java中DecimalFormat 是表示格式的，例如</p>
		<p>double avprice="28234.2534";<br />java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");<br />String aveprice=df.format(avprice);</p>
		<p>这种写法就是整数保留不变，后面保留2位小数，不足则补0</p>
		<p>在oracle里有时需要查询结果就保持格式</p>
		<p>to_char(col_name,'99999D99')</p>
		<p>这表示整数保持5位，小数2位，如果把9改成0，就是强制补0</p>
<img src ="http://www.blogjava.net/sunjavaee/aggbug/65263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-08-23 13:54 <a href="http://www.blogjava.net/sunjavaee/archive/2006/08/23/65263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java直接连接Access数据库</title><link>http://www.blogjava.net/sunjavaee/archive/2006/08/23/65262.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Wed, 23 Aug 2006 05:50:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/08/23/65262.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/65262.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/08/23/65262.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/65262.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/65262.html</trackback:ping><description><![CDATA[package Test;<br />import java.sql.*;<br />/**<br /> * &lt;p&gt;Title: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Description: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Copyright: Copyright (c) 2006&lt;/p&gt;<br /> *<br /> * &lt;p&gt;Company: &lt;/p&gt;<br /> *<br /> * @author not attributable<br /> * @version 1.0<br /> */<br />public class TestConnect {<br />    public TestConnect() {<br />    }<br />    static Connection con = null;<br />    public static void main(String args[]) {<br />      try {<br />        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br />        //String url="jdbc:odbc:Driver={Microsoft Access Driver(*.mdb)};DBQ=D://demo.mdb";<br />        String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=D://demo.mdb";<br />        //String url = "jdbc:odbc:Access";<br />        con = DriverManager.getConnection(url,"","");<br />        Statement stmt = con.createStatement();<br />        String sql = "select * from base";<br />        ResultSet rs = stmt.executeQuery(sql);<br />        while (rs.next()) {<br />          System.out.println("name= " + rs.getString(1));<br />        }<br />        rs.close();<br />        stmt.close();<br />        con.close();<br />        //JakartaBasicDataSource.closeBasicDataSourceConnection();<br />      }<br />      catch (Exception e) {<br />        e.printStackTrace();<br />        System.out.println("now you have not ActiveConnection..........break!!");<br />      }<br />  }<br />}<br /><img src ="http://www.blogjava.net/sunjavaee/aggbug/65262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-08-23 13:50 <a href="http://www.blogjava.net/sunjavaee/archive/2006/08/23/65262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库日期函数</title><link>http://www.blogjava.net/sunjavaee/archive/2006/08/02/61412.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Wed, 02 Aug 2006 14:51:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/08/02/61412.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/61412.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/08/02/61412.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/61412.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/61412.html</trackback:ping><description><![CDATA[
		<p>select current_timestamp from dual<br />select sysdate from dual<br />select to_date('2005-08-19 12:59:59','yyyy-mm-dd hh24:mi:ss') datevalue from <br />dual; <br />select to_char(sysdate,'yyyymmdd') from dual;<br /><br />sqlserver的有用的日期函数- -<br />作者： 日期： 2005-4-12 15:36:05 访问次数：出处：<br /> 显示选项: 自动滚屏[左键停止]<br />1.一个月第一天的<br />SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)</p>
		<p>2.本周的星期一<br />SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)</p>
		<p>3.一年的第一天<br />SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)</p>
		<p>4.季度的第一天<br />SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)</p>
		<p>5.当天的半夜<br />SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)</p>
		<p>6.上个月的最后一天<br />SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))</p>
		<p>7.去年的最后一天<br />SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))</p>
		<p>8.本月的最后一天<br />SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))</p>
		<p>9.本年的最后一天<br />SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))</p>
		<p>10.本月的第一个星期一<br />select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0) </p>
		<p>1.用一条语句得出某日期所在月份的最大天数？</p>
		<p>SELECT DAY(DATEADD(dd, -DAY('2004-02-13'), DATEADD(mm, 1, '2004-02-13'))) AS 'Day Number'</p>
		<p> </p>
		<p>在oracle中有很多关于日期的函数，如： <br />1、add_months()用于从一个日期值增加或减少一些月份 <br />date_value:=add_months(date_value,number_of_months) <br />例： <br />SQL&gt; select add_months(sysdate,12) "Next Year" from dual; <br />  <br />Next Year <br />---------- <br />13-11月-04 <br />  <br />SQL&gt; select add_months(sysdate,112) "Last Year" from dual; <br />  <br />Last Year <br />---------- <br />13-3月 -13 <br />  <br />SQL&gt;  <br />  <br />2、current_date()返回当前会放时区中的当前日期 <br />date_value:=current_date <br />SQL&gt; column sessiontimezone for a15 <br />SQL&gt; select sessiontimezone,current_date from dual; <br />  <br />SESSIONTIMEZONE CURRENT_DA <br />--------------- ---------- <br />+08:00          13-11月-03 <br />  <br />SQL&gt; alter session set time_zone='-11:00' <br />   2  / <br />  <br />会话已更改。 <br />  <br />SQL&gt; select sessiontimezone,current_timestamp from dual; <br />  <br />SESSIONTIMEZONE CURRENT_TIMESTAMP <br />--------------- ------------------------------------ <br />-11:00          12-11月-03 04.59.13.668000 下午 -11: <br />                 00 <br />  <br />SQL&gt;  <br />  <br />3、current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期 <br />timestamp_with_time_zone_value:=current_timestamp([timestamp_precision]) <br />SQL&gt; column sessiontimezone for a15 <br />SQL&gt; column current_timestamp format a36 <br />SQL&gt; select sessiontimezone,current_timestamp from dual; <br />  <br />SESSIONTIMEZONE CURRENT_TIMESTAMP <br />--------------- ------------------------------------ <br />+08:00          13-11月-03 11.56.28.160000 上午 +08: <br />                 00 <br />  <br />SQL&gt; alter session set time_zone='-11:00' <br />   2  / <br />  <br />会话已更改。 <br />  <br />SQL&gt; select sessiontimezone,current_timestamp from dual; <br />  <br />SESSIONTIMEZONE CURRENT_TIMESTAMP <br />--------------- ------------------------------------ <br />-11:00          12-11月-03 04.58.00.243000 下午 -11: <br />                 00 <br />  <br />SQL&gt;  <br />  <br />4、dbtimezone()返回时区 <br />varchar_value:=dbtimezone <br />SQL&gt; select dbtimezone from dual; <br />  <br />DBTIME <br />------ <br />-07:00 <br />  <br />SQL&gt;  <br />  <br />5、extract()找出日期或间隔值的字段值 <br />date_value:=extract(date_field from [datetime_value|interval_value]) <br />SQL&gt; select extract(month from sysdate) "This Month" from dual; <br />  <br />This Month <br />---------- <br />         11 <br />  <br />SQL&gt; select extract(year from add_months(sysdate,36)) "3 Years Out" from dual; <br />  <br />3 Years Out <br />----------- <br />        2006 <br />  <br />SQL&gt;  <br />  <br />6、last_day()返回包含了日期参数的月份的最后一天的日期 <br />date_value:=last_day(date_value) <br />SQL&gt; select last_day(date'2000-02-01') "Leap Yr?" from dual; <br />  <br />Leap Yr? <br />---------- <br />29-2月 -00 <br />  <br />SQL&gt; select last_day(sysdate) "Last day of this month" from dual; <br />  <br />Last day o <br />---------- <br />30-11月-03 <br />  <br />SQL&gt;  <br />  <br />7、localtimestamp()返回会话中的日期和时间 <br />timestamp_value:=localtimestamp <br />SQL&gt; column localtimestamp format a28 <br />SQL&gt; select localtimestamp from dual; <br />  <br />LOCALTIMESTAMP <br />---------------------------- <br />13-11月-03 12.09.15.433000 <br />下午 <br />  <br />SQL&gt; select localtimestamp,current_timestamp from dual; <br />  <br />LOCALTIMESTAMP               CURRENT_TIMESTAMP <br />---------------------------- ------------------------------------ <br />13-11月-03 12.09.31.006000   13-11月-03 12.09.31.006000 下午 +08: <br />下午                         00 <br />  <br />SQL&gt; alter session set time_zone='-11:00'; <br />  <br />会话已更改。 <br />  <br />SQL&gt; select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual; <br />  <br />LOCALTIMESTAMP               SYSDATE <br />---------------------------- ------------------------ <br />12-11月-03 05.11.31.259000   13-11-2003 12:11:31 下午 <br />下午 <br />  <br />SQL&gt;  <br />  <br />8、months_between()判断两个日期之间的月份数量 <br />number_value:=months_between(date_value,date_value) <br />SQL&gt; select months_between(sysdate,date'1971-05-18') from dual; <br />  <br />MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18') <br />---------------------------------------- <br />                               389.855143 <br />  <br />SQL&gt; select months_between(sysdate,date'2001-01-01') from dual; <br />  <br />MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01') <br />---------------------------------------- <br />                               34.4035409 <br />  <br />SQL&gt;  <br />  <br />9、next_day()给定一个日期值，返回由第二个参数指出的日子第一次出现在的日期值（应返回相应日子的名称字符串）</p>
		<p>
				<br />Oracle的日期函数 <br />风逝空灵 发表于 2005-6-21 9:28:46</p>
		<p>
				<br />相信很多人都有过统计某些数据的经历，比如，要统计财务的情况，可能要按每年，每季度，每月，甚至每个星期来分别统计。那在oracle中应该怎么来写sql语句呢，这个时候Oracle的日期函数会给我们很多帮助。</p>
		<p> 常用日期型函数 </p>
		<p>
				<br />1。Sysdate 当前日期和时间</p>
		<p>
				<br />SQL&gt; Select sysdate from dual;</p>
		<p>SYSDATE<br />----------<br />21-6月 -05</p>
		<p>
				<br />2。Last_day 本月最后一天 </p>
		<p>
				<br />SQL&gt; Select last_day(sysdate) from dual;</p>
		<p>LAST_DAY(S<br />----------<br />30-6月 -05</p>
		<p>
				<br />3。Add_months(d,n) 当前日期d后推n个月 </p>
		<p>
				<br />SQL&gt; Select add_months(sysdate,2) from dual;</p>
		<p>ADD_MONTHS<br />----------<br />21-8月 -05</p>
		<p>4。Months_between(f,s) 日期f和s间相差月数 </p>
		<p>
				<br />SQL&gt; select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))from dual;</p>
		<p>
				<br />MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-DD'))<br />----------------------------------------------------------<br />                                                -4.6966741 </p>
		<p>
				<br />5。NEXT_DAY(d, day_of_week)<br />返回由"day_of_week"命名的，在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。</p>
		<p>SQL&gt; SELECT next_day(to_date('20050620','YYYYMMDD'),1) FROM dual;</p>
		<p>NEXT_DAY(T<br />----------<br />26-6月 -05</p>
		<p>
				<br />6。current_date()返回当前会话时区中的当前日期 </p>
		<p>
				<br />SQL&gt; select current_date from dual;</p>
		<p>CURRENT_DA<br />----------<br />21-6月 -05</p>
		<p>
				<br />7。current_timestamp()以timestamp with time zone数据类型返回当前会话时区中的当前日期</p>
		<p>
				<br />SQL&gt; select current_timestamp from dual;</p>
		<p>CURRENT_TIMESTAMP<br />---------------------------------------------------------------------------<br />21-6月 -05 10.13.08.220589 上午 +08:00</p>
		<p>8。dbtimezone()返回时区</p>
		<p>
				<br />SQL&gt; select dbtimezone from dual;</p>
		<p>DBTIME<br />------<br />-08:00</p>
		<p>9。extract()找出日期或间隔值的字段值 </p>
		<p>SQL&gt; select extract(month from sysdate) "This Month" from dual;</p>
		<p>This Month<br />----------<br />         6</p>
		<p>
				<br />SQL&gt; select extract(year from add_months(sysdate,36)) " Years" from dual;</p>
		<p>     Years<br />----------<br />      2008</p>
		<p>10。localtimestamp()返回会话中的日期和时间 </p>
		<p>
				<br />SQL&gt; select localtimestamp from dual;</p>
		<p>LOCALTIMESTAMP<br />---------------------------------------------------------------------------<br />21-6月 -05 10.18.15.855652 上午</p>
		<p>常用日期数据格式（该段为摘抄）</p>
		<p>Y或YY或YYY 年的最后一位，两位或三位 Select to_char(sysdate,’YYY’) from dual； 002表示2002年 <br />SYEAR或YEAR SYEAR使公元前的年份前加一负号 Select to_char(sysdate,’SYEAR’) from dual； -1112表示公元前111 2年 <br />Q 季度，1～3月为第一季度 Select to_char(sysdate,’Q’) from dual； 2表示第二季度① <br />MM 月份数 Select to_char(sysdate,’MM’) from dual； 12表示12月 <br />RM 月份的罗马表示 Select to_char(sysdate,’RM’) from dual； IV表示4月 <br />Month 用9个字符长度表示的月份名 Select to_char(sysdate,’Month’) from dual； May后跟6个空格表示5月 <br />WW 当年第几周 Select to_char(sysdate,’WW’) from dual； 24表示2002年6月13日为第24周 <br />W 本月第几周 Select to_char(sysdate,’W’) from dual； 2002年10月1日为第1周 <br />DDD 当年第几, 1月1日为001，2月1日为032 Select to_char(sysdate,’DDD’) from dual； 363 2002年1 2月2 9日为第363天 <br />DD 当月第几天 Select to_char(sysdate,’DD’) from dual； 04 10月4日为第4天 <br />D 周内第几天 Select to_char(sysdate,’D’) from dual； 5 2002年3月14日为星期一 <br />DY 周内第几天缩写 Select to_char(sysdate,’DY’) from dual； SUN 2002年3月24日为星期天 <br />HH或HH12 12进制小时数 Select to_char(sysdate,’HH’) from dual； 02 午夜2点过8分为02 <br />HH24 24小时制 Select to_char(sysdate,’HH24’) from dual； 14 下午2点08分为14 <br />MI 分钟数(0～59) Select to_char(sysdate,’MI’) from dual； 17下午4点17分 <br />SS 秒数(0～59) Select to_char(sysdate,’SS’) from dual； 22 11点3分22秒 <br />提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式，将它用于分钟也能工作，但结果是错误的。 </p>
		<p>
				<br />现在给出一些实践后的用法：</p>
		<p>1。上月末天：</p>
		<p>
				<br />SQL&gt; select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from<br />dual;</p>
		<p>LASTDAY<br />----------<br />2005-05-31</p>
		<p>2。上月今天</p>
		<p>
				<br />SQL&gt; select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;</p>
		<p>
				<br />PRETODAY<br />----------<br />2005-05-21</p>
		<p>3.上月首天</p>
		<p>SQL&gt; select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;</p>
		<p>FIRSTDAY<br />----------<br />2005-05-01</p>
		<p>4.按照每周进行统计</p>
		<p>
				<br />SQL&gt; select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');</p>
		<p>TO<br />--<br />25</p>
		<p>5。按照每月进行统计</p>
		<p>
				<br />SQL&gt; select to_char(sysdate,'mm') from dual group by to_char(sysdate,'mm');</p>
		<p>TO<br />--<br />06</p>
		<p>6。按照每季度进行统计</p>
		<p>
				<br />SQL&gt; select to_char(sysdate,'q') from dual group by to_char(sysdate,'q');</p>
		<p>T<br />-<br />2</p>
		<p>7。按照每年进行统计</p>
		<p>
				<br />SQL&gt; select to_char(sysdate,'yyyy') from dual group by to_char(sysdate,'yyyy');</p>
		<p>TO_C<br />----<br />2005</p>
		<p>到此结束。</p>
		<p> <br />阅读全文(180) | 回复(1) | 引用通告(0) | 编辑 <br /> <br />  <br />回复:Oracle的日期函数 <br />smilepig(游客)发表评论于2005-7-25 13:36:49</p>
		<p> </p>
		<p>SQL&gt; select to_char(sysdate,'DAY','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''') fr<br />om dual;</p>
		<p>TO_CHA<br />------<br />星期一<br /> <br /></p>
<img src ="http://www.blogjava.net/sunjavaee/aggbug/61412.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-08-02 22:51 <a href="http://www.blogjava.net/sunjavaee/archive/2006/08/02/61412.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer和Oracle常用函数对比</title><link>http://www.blogjava.net/sunjavaee/archive/2006/08/02/61411.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Wed, 02 Aug 2006 14:46:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/08/02/61411.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/61411.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/08/02/61411.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/61411.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/61411.html</trackback:ping><description><![CDATA[
		<p>SQLServer和Oracle是大家经常用到的数据库，在此感谢作者总结出这些常用函数以供大家参考。 </p>
		<p>数学函数：<br />　　1.绝对值 <br />　　S:select abs(-1) value <br />　　O:select abs(-1) value from dual </p>
		<p>　　2.取整(大) <br />　　S:select ceiling(-1.001) value <br />　　O:select ceil(-1.001) value from dual </p>
		<p>　　3.取整（小） <br />　　S:select floor(-1.001) value <br />　　O:select floor(-1.001) value from dual </p>
		<p>　　4.取整（截取） <br />　　S:select cast(-1.002 as int) value <br />　　O:select trunc(-1.002) value from dual </p>
		<p>　　5.四舍五入 <br />　　S:select round(1.23456,4) value 1.23460 <br />　　O:select round(1.23456,4) value from dual 1.2346 </p>
		<p>　　6.e为底的幂 <br />　　S:select Exp(1) value 2.7182818284590451 <br />　　O:select Exp(1) value from dual 2.71828182 </p>
		<p>　　7.取e为底的对数 <br />　　S:select log(2.7182818284590451) value 1 <br />　　O:select ln(2.7182818284590451) value from dual; 1 </p>
		<p>　　8.取10为底对数 <br />　　S:select log10(10) value 1 <br />　　O:select log(10,10) value from dual; 1 </p>
		<p>　　9.取平方 <br />　　S:select SQUARE(4) value 16 <br />　　O:select power(4,2) value from dual 16 </p>
		<p>　　10.取平方根 <br />　　S:select SQRT(4) value 2 <br />　　O:select SQRT(4) value from dual 2 </p>
		<p>　　11.求任意数为底的幂 <br />　　S:select power(3,4) value 81 <br />　　O:select power(3,4) value from dual 81 </p>
		<p>　　12.取随机数 <br />　　S:select rand() value <br />　　O:select sys.dbms_random.value(0,1) value from dual; </p>
		<p>　　13.取符号 <br />　　S:select sign(-8) value -1 <br />　　O:select sign(-8) value from dual -1 </p>
		<p>　　14.圆周率 <br />　　S:SELECT PI() value 3.1415926535897931 <br />　　O:不知道 </p>
		<p>　　15.sin,cos,tan 参数都以弧度为单位 <br />　　例如：select sin(PI()/2) value 得到1（SQLServer） </p>
		<p>　　16.Asin,Acos,Atan,Atan2 返回弧度 </p>
		<p>　　17.弧度角度互换(SQLServer，Oracle不知道) <br />　　DEGREES：弧度-〉角度 <br />　　RADIANS：角度-〉弧度 <br />数值间比较：<br />　　18. 求集合最大值 <br />　　S:select max(value) value from <br />　　(select 1 value <br />　　union <br />　　select -2 value <br />　　union <br />　　select 4 value <br />　　union <br />　　select 3 value)a </p>
		<p>　　O:select greatest(1,-2,4,3) value from dual </p>
		<p>　　19. 求集合最小值 <br />　　S:select min(value) value from <br />　　(select 1 value <br />　　union <br />　　select -2 value <br />　　union <br />　　select 4 value <br />　　union <br />　　select 3 value)a </p>
		<p>　　O:select least(1,-2,4,3) value from dual </p>
		<p>　　20.如何处理null值(F2中的null以10代替) <br />　　S:select F1,IsNull(F2,10) value from Tbl <br />　　O:select F1,nvl(F2,10) value from Tbl </p>
		<p>　　21.求字符序号 <br />　　S:select ascii('a') value <br />　　O:select ascii('a') value from dual </p>
		<p>　　22.从序号求字符 <br />　　S:select char(97) value <br />　　O:select chr(97) value from dual </p>
		<p>　　23.连接 <br />　　S:select '11'+'22'+'33' value <br />　　O:select CONCAT('11','22')　　33 value from dual </p>
		<p>　　23.子串位置 --返回3 <br />　　S:select CHARINDEX('s','sdsq',2) value <br />　　O:select INSTR('sdsq','s',2) value from dual </p>
		<p>　　23.模糊子串的位置 --返回2,参数去掉中间%则返回7 <br />　　S:select patindex('%d%q%','sdsfasdqe') value <br />　　O:oracle没发现，但是instr可以通过第四个参数控制出现次数 <br />　　select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6 </p>
		<p>　　24.求子串 <br />　　S:select substring('abcd',2,2) value <br />　　O:select substr('abcd',2,2) value from dual </p>
		<p>　　25.子串代替 返回aijklmnef <br />　　S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value <br />　　O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual </p>
		<p>　　26.子串全部替换 <br />　　S:没发现 <br />　　O:select Translate('fasdbfasegas','fa','我' ) value from dual </p>
		<p>　　27.长度 <br />　　S:len,datalength <br />　　O:length </p>
		<p>　　28.大小写转换 lower,upper </p>
		<p>　　29.单词首字母大写 <br />　　S:没发现 <br />　　O:select INITCAP('abcd dsaf df') value from dual </p>
		<p>　　30.左补空格（LPAD的第一个参数为空格则同space函数） <br />　　S:select space(10)+'abcd' value <br />　　O:select LPAD('abcd',14) value from dual </p>
		<p>　　31.右补空格（RPAD的第一个参数为空格则同space函数） <br />　　S:select 'abcd'+space(10) value <br />　　O:select RPAD('abcd',14) value from dual </p>
		<p>　　32.删除空格 <br />　　S:ltrim,rtrim <br />　　O:ltrim,rtrim,trim </p>
		<p>　　33. 重复字符串 <br />　　S:select REPLICATE('abcd',2) value <br />　　O:没发现 </p>
		<p>　　34.发音相似性比较(这两个单词返回值一样，发音相同) <br />　　S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') <br />　　O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual <br />　　SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差 <br />　　返回0-4，4为同音，1最高 <br />日期函数：<br />　　35.系统时间 <br />　　S:select getdate() value <br />　　O:select sysdate value from dual </p>
		<p>　　36.前后几日 <br />　　直接与整数相加减 </p>
		<p>　　37.求日期 <br />　　S:select convert(char(10),getdate(),20) value <br />　　O:select trunc(sysdate) value from dual <br />　　select to_char(sysdate,'yyyy-mm-dd') value from dual </p>
		<p>　　38.求时间 <br />　　S:select convert(char(8),getdate(),108) value <br />　　O:select to_char(sysdate,'hh24:mm:ss') value from dual </p>
		<p>39.取日期时间的其他部分 <br />　　S:DATEPART 和 DATENAME 函数 （第一个参数决定） <br />　　O:to_char函数 第二个参数决定 </p>
		<p>　　参数---------------------------------下表需要补充 <br />　　year yy, yyyy <br />　　quarter qq, q (季度) <br />　　month mm, m (m O无效) <br />　　dayofyear dy, y (O表星期) <br />　　day dd, d (d O无效) <br />　　week wk, ww (wk O无效) <br />　　weekday dw (O不清楚) <br />　　Hour hh,hh12,hh24 (hh12,hh24 S无效) <br />　　minute mi, n (n O无效) <br />　　second ss, s (s O无效) <br />　　millisecond ms (O无效) <br />　　---------------------------------------------- </p>
		<p>　　40.当月最后一天 <br />　　S:不知道 <br />　　O:select LAST_DAY(sysdate) value from dual </p>
		<p>　　41.本星期的某一天（比如星期日） <br />　　S:不知道 <br />　　O:SELECT Next_day(sysdate,7) vaule FROM DUAL; </p>
		<p>　　42.字符串转时间 <br />　　S:可以直接转或者select cast('2004-09-08'as datetime) value <br />　　O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL; </p>
		<p>　　43.求两日期某一部分的差（比如秒） <br />　　S:select datediff(ss,getdate(),getdate()+12.3) value <br />　　O:直接用两个日期相减（比如d1-d2=12.3） <br />　　SELECT (d1-d2)*24*60*60 vaule FROM DUAL; </p>
		<p>　　44.根据差值求新的日期（比如分钟） <br />　　S:select dateadd(mi,8,getdate()) value <br />　　O:SELECT sysdate+8/60/24 vaule FROM DUAL; </p>
		<p>　　45.求不同时区时间 <br />　　S:不知道 <br />　　O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL; </p>
		<p>　　-----时区参数,北京在东8区应该是Ydt------- <br />　　AST ADT 大西洋标准时间 <br />　　BST BDT 白令海标准时间 <br />　　CST CDT 中部标准时间 <br />　　EST EDT 东部标准时间 <br />　　GMT 格林尼治标准时间 <br />　　HST HDT 阿拉斯加?夏威夷标准时间 <br />　　MST MDT 山区标准时间 <br />　　NST 纽芬兰标准时间 <br />　　PST PDT 太平洋标准时间 <br />　　YST YDT YUKON标准时间<br /></p>
<img src ="http://www.blogjava.net/sunjavaee/aggbug/61411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-08-02 22:46 <a href="http://www.blogjava.net/sunjavaee/archive/2006/08/02/61411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdbc直接连接access</title><link>http://www.blogjava.net/sunjavaee/archive/2006/07/31/61054.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Mon, 31 Jul 2006 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/07/31/61054.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/61054.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/07/31/61054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/61054.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/61054.html</trackback:ping><description><![CDATA[package Test;<br />import java.sql.*;<br />/**<br /> * &lt;p&gt;Title: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Description: &lt;/p&gt;<br /> *<br /> * &lt;p&gt;Copyright: Copyright (c) 2006&lt;/p&gt;<br /> *<br /> * &lt;p&gt;Company: &lt;/p&gt;<br /> *<br /> * @author not attributable<br /> * @version 1.0<br /> */<br />public class TestConnect {<br />    public TestConnect() {<br />    }<br />    static Connection con = null;<br />    public static void main(String args[]) {<br />      try {<br />        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br />        //String url="jdbc:odbc:Driver={Microsoft Access Driver(*.mdb)};DBQ=D://demo.mdb";<br />        String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=D://demo.mdb";<br />        //String url = "jdbc:odbc:Access";<br />        con = DriverManager.getConnection(url,"","");<br />        Statement stmt = con.createStatement();<br />        String sql = "select * from base";<br />        ResultSet rs = stmt.executeQuery(sql);<br />        while (rs.next()) {<br />          System.out.println("name= " + rs.getString(1));<br />        }<br />        rs.close();<br />        stmt.close();<br />        con.close();<br />        //JakartaBasicDataSource.closeBasicDataSourceConnection();<br />      }<br />      catch (Exception e) {<br />        e.printStackTrace();<br />        System.out.println("now you have not ActiveConnection..........break!!");<br />      }<br />  }<br />}<br /><img src ="http://www.blogjava.net/sunjavaee/aggbug/61054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-07-31 17:26 <a href="http://www.blogjava.net/sunjavaee/archive/2006/07/31/61054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小数显示问题</title><link>http://www.blogjava.net/sunjavaee/archive/2006/06/27/55320.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Tue, 27 Jun 2006 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/06/27/55320.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/55320.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/06/27/55320.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/55320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/55320.html</trackback:ping><description><![CDATA[
		<p>java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");<br />String aveprice=df.format(avprice);</p>
		<p>这种写法就是整数保留不变，后面保留2位小数，不足则补0</p>
		<p>在oracle里有时需要查询结果就保持格式</p>
		<p>to_char(col_name,'99999D99')</p>
		<p>这表示整数保持5位，小数2位，如果把9改成0，就是强制补0<br /></p>
<img src ="http://www.blogjava.net/sunjavaee/aggbug/55320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-06-27 14:01 <a href="http://www.blogjava.net/sunjavaee/archive/2006/06/27/55320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>准备开始学JMS</title><link>http://www.blogjava.net/sunjavaee/archive/2006/05/31/49373.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Wed, 31 May 2006 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/05/31/49373.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/49373.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/05/31/49373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/49373.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/49373.html</trackback:ping><description><![CDATA[
		<p>最近几天项目刚上线，这几天估计不会有太多的事情。我也想学点东西，刚好利用这个时间学习一下JMS，现在就从基础开始学习JMS,以下为网上资料转载：<br />一. JMS简介 <br />1. JMS基本概念 <br />JMS(Java Message Service)是访问企业消息系统的标准API,它便于消息系 <br />统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。 <br /><br />2. JMS基本功能 <br />JMS是用于和面向消息的中间件相互通信的应用程序接口。它既支持点对点(point-to-point)的域，又支持发布/订阅(publish/subscribe)类型的域，并且提供对下列类型的支持：经认可的消息传递,事务型消息的传递，一致性消息和具有持久性的订阅者支持。JMS还提供了另一种方式来对您的应用与旧的后台系统相集成。 <br />3. WebLogic JMS Server介绍 <br />WebLogic Server8.1符合JAVA规范,并通过Sun Microsystems J2EE 1.3认 <br />证.作为WebLogic的一部分,当然WebLogic JMS Server也完全遵从JMS规范,还支持集群,并可以应用于实际企业系统.下图是WebLogic JMS Server体系结构.图中可以看到WebLogic JMS Server主要组件有: WebLogic JMS servers(用于消息通信),Java客户端,JNDI(用于域名查找), 后备存储(用于持久消息存储,基于文件或者JDBC数据库). <br /><br />二. WebLogic JMS特性 <br />1. 消息通信模型 <br />JMS 支持两种消息通信模型：点到点（point-to-point）（PTP）模型和发布/订阅（Pub/Sub）模型。除了下列不同之外，这两种消息通信模型非常地相似： <br />PTP 模型规定了一个消息只能有一个接收者;Pub/Sub 模型允许一个消息可以有多个接收者。 <br />2. 消息组成 <br />消息传递系统的中心就是消息。 <br />一条 Message 分为三个组成部分： <br />头（header）是个标准字段集，客户机和供应商都用它来标识和路由消息。 <br />属性（property）支持把可选头字段添加到消息。如果您的应用程序需要不使用标准头字段对消息编目和分类，您就可以添加一个属性到消息以实现这个编目和分类。提供 set&lt;Type&gt;Property(...) 和 get&lt;Type&gt;Property(...) 方法以设置和获取各种 Java 类型的属性，包括 Object。JMS 定义了一个供应商选择提供的标准属性集。 <br />消息的主体（body）包含要发送给接收应用程序的内容。每个消息接口特定于它所支持的内容类型。 <br />JMS 为不同类型的内容提供了它们各自的消息类型，但是所有消息都派生自 Message 接口。 <br />StreamMessage：包含 Java 基本数值流，用标准流操作来顺序的填充和读取。 <br />MapMessage：包含一组名/值对；名称为 string 类型，而值为 Java 的基本类型。 <br />TextMessage：包含一个 String。 <br />ObjectMessage：包含一个 Serializable Java 对象；能使用 JDK 的集合类。 <br />BytesMessage：包含未解释字节流: 编码主体以匹配现存的消息格式。 <br />XMLMessage: 包含XML内容。扩展TextMessage,XMLMessage 类型的使用，使得消息过滤非常便利。 <br />3. 消息确认模式 <br />非事务性会话中，应用程序创建的会话有5 种确认模式,而在事务性会话中，确认模式被忽略。 <br />五种确认模式说明: <br />AUTO_ACKNOWLEDGE：自动确认模式。一旦接收方应用程序的方法调用从处理消息处返回，会话对象就会确认消息的接收。 <br />CLIENT_ACKNOWLEDGE：客户端确认模式。会话对象依赖于应用程序对被接收的消息调用一个acknowledge()方法。一旦这个方法被调用，会话会确认最后一次确认之后所有接收到的消息。这种模式允许应用程序以一个调用来接收，处理并确认一批消息。注意：在管理控制台中，如果连接工厂的Acknowledge Policy（确认方针）属性被设置为"Previous"（提前），但是你希望为一个给定的会话确认所有接收到的消息，那么就用最后一条消息来调用acknowledge()方法。 <br />DUPS_OK_ACKNOWLEDGE：允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回，会话对象就会确认消息的接收；而且允许重复确认。在需要考虑资源使用时，这种模式非常有效。注意：如果你的应用程序无法处理重复的消息的话，你应该避免使用这种模式。如果发送消息的初始化尝试失败，那么重复的消息可以被重新发送。 <br />NO_ACKNOWLEDGE：不确认模式。不确认收到的消息是需要的。消息发送给一个NO_ACKNOWLEDGE 会话后，它们会被WebLogic 服务器立即删除。在这种模式下，将无法重新获得已接收的消息，而且可能导致下面的结果：1. 消息可能丢失；和（或者）另一种情况：2. 如果发送消息的初始化尝试失败，会出现重复消息被发送的情况。 <br />MULTICAST_NO_ACKNOWLEDGE：IP组播下的不确认模式，同样无需确认。发送给一个MULTICAST_NO_ACKNOWLEDGE会话的消息， 会共享之前所述的NO_ACKNOWLEDGE 确认模式一样的特征。这种模式支持希望通过IP 组播方式进行消息通信的应用程序，而且无需依赖会话确认提供的服务质量。注意：如果你的应用程序无法处理消息的丢失或者重复，那么你应该避免使用这种模式。如果发送消息的初始化尝试失败的话，重复的消息可能会被再次发送。 <br />注：在上表的5 种确认模式中，AUTO_ACKNOWLEDGE ，DUPS_OK_ACKNOWLEDGE 和 <br />CLIENT_ACKNOWLEDGE 是JMS 规范定义的，NO_ACKNOWLEDGE 和MULTICAST_NO_ACKNOWLEDGE是WebLogic JMS 提供的。 <br />三. 配置JMS <br />1. 创建连接工厂 <br />(1) 启动WebLogic Server8.1,登录控制台,选中JMS Connection Factories节点,点击右边的" Configure a new JMS Connection Factory..."; <br /><br />(2) 填写连接工厂的名称SendJMSFactory和JNDI名称SendJMSFactory,点击"Create"; <br /><br />(3) 勾上"myserver",将SendJMSFactory应用到myserver; <br /><br />2. 定义后备存储 <br />(1) 选中JMS Stores节点,点击右边的" Configure a new JMS Connection Factory..."; <br /><br />(2) 填写文件后备存储的名称SendFileStore和目录Directionary E:\BEA\user_projects\domains\mydomain\sendfilestore,点击"Create". <br /><br />3. 创建JMS服务器 <br />(1) 选中JMS Servers节点,点击右边的" Configure a new JMSServer..."; <br /><br />(2) 填写JMS服务器的名称SendJMSServer和Paging Store设为" SendFileStore",点击"Create"; <br /><br />(3) Target选中"myserver",将SendJMSServer应用到myserver. <br /><br />4. 创建消息队列 <br />(1) 展开"SendJMSServer"节点,点击" Configure a new JMS Queue..."; <br /><br />(2) 填写消息队列的名称SendJMSQueue和JNDI名称SendJMSQueue,点击"Create"; <br /><br />四. JMS应用程序 <br />一个 JMS 应用程序由下列元素组成： <br />JMS 客户机。 用 JMS API 发送和接收消息的 Java 程序。 <br />非 JMS（Non-JMS）客户机。 认识到这一点很重要 - 旧的程序经常成为整个 JMS 应用程序的一部分，而且它们的包含应该在设计时预先考虑。 <br />消息。 在 JMS 和非 JMS 客户机之间交换的消息的格式和内容是 JMS 应用程序设计所必须考虑的部分。 <br />JMS 供应商。供应商必须提供特定于其 MOM 产品的具体的实现。 <br />受管对象。 消息传递系统供应商的管理员创建了一个对象，它独立于供应商专有的技术。包括连接工厂ConnectionFactory和目的Destination。 <br />一种典型的 JMS 程序需要经过下列步骤才能开始消息产生和使用: <br />通过 JNDI 查找 ConnectionFactory。 <br />通过 JNDI 查找一个或多个 Destination。 <br />用 ConnectionFactory 创建一个 Connection。 <br />用 Connection 创建一个或多个 Session。 <br />用 Session 和 Destination 创建所需的 MessageProducer 和 MessageConsumer。 <br />启动 Connection。 <br />下面利用上面配置的JMS资源演示点对点消息发送和接收的过程。 <br />五. 设计消息发送端 <br />1. 使用的JMS资源 <br />服务器URL: t3://localhost:80 <br />连接工厂: SendJMSFactory <br />队列: SendJMSQueue <br />2. 设计步骤 <br />初始化JNDI Tree <br />Hashtable env = new Hashtable(); <br />env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); <br />env.put(Context.PROVIDER_URL, PROVIDER_URL); <br />return new InitialContext(env); <br />lookup ConnectionFactory <br />qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); <br />lookup Destination <br />queue = (Queue) ctx.lookup(queueName); <br />用 ConnectionFactory 创建Connection <br />qcon = qconFactory.createQueueConnection(); <br />用 Connection 创建一个Session <br />qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); <br />用 Session 和 Destination 创建MessageProducer <br />qsender = qsession.createSender(queue); <br />启动 Connection。 <br />qcon.start(); <br />发送消息 <br />msg = qsession.createTextMessage(); <br />msg.setText(message); <br />qsender.send(msg); <br />3. 源代码 <br />package jmssample; <br /><br />import java.util.Hashtable; <br />import javax.jms.*; <br />import javax.naming.Context; <br />import javax.naming.InitialContext; <br />import javax.naming.NamingException; <br />import java.io.BufferedReader; <br />import java.io.IOException; <br />import java.io.InputStreamReader; <br /><br />/** This example shows how to establish a connection <br />* and send messages to the JMS queue. The classes in this <br />* package operate on the same JMS queue. Run the classes together to <br />* witness messages being sent and received, and to browse the queue <br />* for messages. The class is used to send messages to the queue. <br />* <br />* @author Copyright (c) 1999-2003 by BEA Systems, Inc. All Rights Reserved. <br />*/ <br />public class QueueSend <br />{ <br />// Defines the JNDI context factory. <br />public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; <br /><br />// Defines the JNDI provider url. <br />public final static String PROVIDER_URL=" t3://localhost:80"; <br /><br />// Defines the JMS connection factory for the queue. <br />public final static String JMS_FACTORY="SendJMSFactory"; <br /><br />// Defines the queue. <br />public final static String QUEUE="SendJMSQueue"; <br /><br /><br />private QueueConnectionFactory qconFactory; <br />private QueueConnection qcon; <br />private QueueSession qsession; <br />private QueueSender qsender; <br />private Queue queue; <br />private TextMessage msg; <br /><br />/** <br />* Creates all the necessary objects for sending <br />* messages to a JMS queue. <br />* <br />* @param ctx JNDI initial context <br />* @param queueName name of queue <br />* @exception NamingException if operation cannot be performed <br />* @exception JMSException if JMS fails to initialize due to internal error <br />*/ <br />public void init(Context ctx, String queueName) <br />throws NamingException, JMSException <br />{ <br />qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); <br />qcon = qconFactory.createQueueConnection(); <br />qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); <br />queue = (Queue) ctx.lookup(queueName); <br />qsender = qsession.createSender(queue); <br />msg = qsession.createTextMessage(); <br />qcon.start(); <br />} <br /><br />/** <br />* Sends a message to a JMS queue. <br />* <br />* @param message message to be sent <br />* @exception JMSException if JMS fails to send message due to internal error <br />*/ <br />public void send(String message) throws JMSException { <br />msg.setText(message); <br />qsender.send(msg); <br />} <br /><br />/** <br />* Closes JMS objects. <br />* @exception JMSException if JMS fails to close objects due to internal error <br />*/ <br />public void close() throws JMSException { <br />qsender.close(); <br />qsession.close(); <br />qcon.close(); <br />} <br />/** main() method. <br />* <br />* @param args WebLogic Server URL <br />* @exception Exception if operation fails <br />*/ <br />public static void main(String[] args) throws Exception { <br />InitialContext ic = getInitialContext(); <br />QueueSend qs = new QueueSend(); <br />qs.init(ic, QUEUE); <br />readAndSend(qs); <br />qs.close(); <br />} <br /><br />private static void readAndSend(QueueSend qs) <br />throws IOException, JMSException <br />{ <br />BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in)); <br />String line=null; <br />boolean quitNow = false; <br />do { <br />System.out.print("Enter message (\"quit\" to quit): "); <br />line = msgStream.readLine(); <br />if (line != null &amp;&amp; line.trim().length() != 0) { <br />qs.send(line); <br />System.out.println("JMS Message Sent: "+line+"\n"); <br />quitNow = line.equalsIgnoreCase("quit"); <br />} <br />} while (! quitNow); <br /><br />} <br /><br />private static InitialContext getInitialContext() <br />throws NamingException <br />{ <br />Hashtable env = new Hashtable(); <br />env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); <br />env.put(Context.PROVIDER_URL, PROVIDER_URL); <br />return new InitialContext(env); <br />} <br /><br />} <br /><br />六. 设计消息接收端 <br />1. 使用的JMS资源 <br />服务器URL: t3://localhost:80 <br />连接工厂: SendJMSFactory <br />队列: SendJMSQueue <br />2. 设计步骤 <br />初始化JNDI Tree <br />Hashtable env = new Hashtable(); <br />env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); <br />env.put(Context.PROVIDER_URL, PROVIDER_URL); <br />return new InitialContext(env); <br />lookup ConnectionFactory <br />qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); <br />lookup Destination <br />queue = (Queue) ctx.lookup(queueName); <br />用 ConnectionFactory 创建Connection <br />qcon = qconFactory.createQueueConnection(); <br />用 Connection 创建一个Session <br />qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); <br />用 Session 和 Destination 创建MessageConsumer <br />qreceiver = qsession.createReceiver(queue); <br />设置监听 <br />qreceiver.setMessageListener(this); <br />启动 Connection <br />qcon.start(); <br />3. 源代码 <br />package jmssample; <br /><br />import java.util.Hashtable; <br />import javax.jms.*; <br />import javax.naming.Context; <br />import javax.naming.InitialContext; <br />import javax.naming.NamingException; <br />import java.util.Hashtable; <br />import javax.jms.*; <br />import javax.naming.Context; <br />import javax.naming.InitialContext; <br />import javax.naming.NamingException; <br /><br />/** <br />* This example shows how to establish a connection to <br />* and receive messages from a JMS queue. The classes in this <br />* package operate on the same JMS queue. Run the classes together to <br />* witness messages being sent and received, and to browse the queue <br />* for messages. This class is used to receive and remove messages <br />* from the queue. <br />* <br />* @author Copyright (c) 1999-2003 by BEA Systems, Inc. All Rights Reserved. <br />*/ <br />public class QueueReceive implements MessageListener <br />{ <br />// Defines the JNDI context factory. <br />public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; <br /><br />// Defines the JNDI provider url. <br />public final static String PROVIDER_URL=" t3://localhost:80"; <br /><br />// Defines the JMS connection factory for the queue. <br />public final static String JMS_FACTORY="SendJMSFactory"; <br /><br />// Defines the queue. <br />public final static String QUEUE="SendJMSQueue"; <br /><br />private QueueConnectionFactory qconFactory; <br />private QueueConnection qcon; <br />private QueueSession qsession; <br />private QueueReceiver qreceiver; <br />private Queue queue; <br />private boolean quit = false; <br /><br />/** <br />* Message listener interface. <br />* @param msg message <br />*/ <br />public void onMessage(Message msg) <br />{ <br />try { <br />String msgText; <br />if (msg instanceof TextMessage) { <br />msgText = ((TextMessage)msg).getText(); <br />} else { <br />msgText = msg.toString(); <br />} <br /><br />System.out.println("Message Received: "+ msgText ); <br /><br />if (msgText.equalsIgnoreCase("quit")) { <br />synchronized(this) { <br />quit = true; <br />this.notifyAll(); // Notify main thread to quit <br />} <br />} <br />} catch (JMSException jmse) { <br />jmse.printStackTrace(); <br />} <br />} <br /><br />/** <br />* Creates all the necessary objects for receiving <br />* messages from a JMS queue. <br />* <br />* @param ctx JNDI initial context <br />* @param queueName name of queue <br />* @exception NamingException if operation cannot be performed <br />* @exception JMSException if JMS fails to initialize due to internal error <br />*/ <br />public void init(Context ctx, String queueName) <br />throws NamingException, JMSException <br />{ <br />qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); <br />qcon = qconFactory.createQueueConnection(); <br />qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); <br />queue = (Queue) ctx.lookup(queueName); <br />qreceiver = qsession.createReceiver(queue); <br />qreceiver.setMessageListener(this); <br />qcon.start(); <br />} <br /><br />/** <br />* Closes JMS objects. <br />* @exception JMSException if JMS fails to close objects due to internal error <br />*/ <br />public void close()throws JMSException <br />{ <br />qreceiver.close(); <br />qsession.close(); <br />qcon.close(); <br />} <br />/** <br />* main() method. <br />* <br />* @param args WebLogic Server URL <br />* @exception Exception if execution fails <br />*/ <br /><br />public static void main(String[] args) throws Exception { <br /><br />InitialContext ic = getInitialContext(); <br />QueueReceive qr = new QueueReceive(); <br />qr.init(ic, QUEUE); <br /><br />System.out.println("JMS Ready To Receive Messages (To quit, send a \"quit\" message)."); <br /><br />// Wait until a "quit" message has been received. <br />synchronized(qr) { <br />while (! qr.quit) { <br />try { <br />qr.wait(); <br />} catch (InterruptedException ie) {} <br />} <br />} <br />qr.close(); <br />} <br />private static InitialContext getInitialContext() <br />throws NamingException <br />{ <br />Hashtable env = new Hashtable(); <br />env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY); <br />env.put(Context.PROVIDER_URL, PROVIDER_URL); <br />return new InitialContext(env); <br />}<br />} <br />七. 测试消息发送和接收 <br />1. 设置WebLogic Classpath; <br /><br />2. 转到发送接收程序目录编译文件; <br /><br />3. 执行接受程序; <br />4. 打开另一窗口,执行发送程序; <br />5. 输入发送消息"quit",接收程序结束. <br /><br /></p>
<img src ="http://www.blogjava.net/sunjavaee/aggbug/49373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-05-31 23:25 <a href="http://www.blogjava.net/sunjavaee/archive/2006/05/31/49373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>五.一随笔</title><link>http://www.blogjava.net/sunjavaee/archive/2006/05/06/44735.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Sat, 06 May 2006 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/05/06/44735.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/44735.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/05/06/44735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/44735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/44735.html</trackback:ping><description><![CDATA[今天心情郁闷到了极点,看着自己来深圳也一年了收获在什么地方呢?不解!是不是我现在的思维方式真的不对,或许我真要换一种方式活着.现在对未来真的是一片茫然,对自己的前途真的没有什么好的规划.难道就真的这样慢慢死去吗?这样每天活着我感觉灵魂都在死去.这样每天如行尸走肉一样在世上残喘,难道有意义吗?曾经的誓言,曾经的理想,曾经的抱负,曾经的......难道都将随着这每天模式般的生活而飞灰湮灭吗?<br />眼前的路在哪里......真的很渺茫!每天这样只有生存的意义,而没有生活的意义.<img src ="http://www.blogjava.net/sunjavaee/aggbug/44735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-05-06 14:03 <a href="http://www.blogjava.net/sunjavaee/archive/2006/05/06/44735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天又晕了一天,工作量太大了,做了一天但是离进度还很远,我想明天早上6点就去做</title><link>http://www.blogjava.net/sunjavaee/archive/2006/04/25/43121.html</link><dc:creator>每天进步一点点</dc:creator><author>每天进步一点点</author><pubDate>Tue, 25 Apr 2006 12:21:00 GMT</pubDate><guid>http://www.blogjava.net/sunjavaee/archive/2006/04/25/43121.html</guid><wfw:comment>http://www.blogjava.net/sunjavaee/comments/43121.html</wfw:comment><comments>http://www.blogjava.net/sunjavaee/archive/2006/04/25/43121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sunjavaee/comments/commentRss/43121.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunjavaee/services/trackbacks/43121.html</trackback:ping><description><![CDATA[今天又晕了一天,工作量太大了,做了一天但是离进度还很远,我想明天早上6点就去做<img src ="http://www.blogjava.net/sunjavaee/aggbug/43121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunjavaee/" target="_blank">每天进步一点点</a> 2006-04-25 20:21 <a href="http://www.blogjava.net/sunjavaee/archive/2006/04/25/43121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>