﻿<?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-madshime</title><link>http://www.blogjava.net/madshime/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Apr 2026 22:38:25 GMT</lastBuildDate><pubDate>Fri, 17 Apr 2026 22:38:25 GMT</pubDate><ttl>60</ttl><item><title>JavaScript双击文本实现可编辑</title><link>http://www.blogjava.net/madshime/archive/2009/05/17/271095.html</link><dc:creator>jrose</dc:creator><author>jrose</author><pubDate>Sun, 17 May 2009 00:50:00 GMT</pubDate><guid>http://www.blogjava.net/madshime/archive/2009/05/17/271095.html</guid><wfw:comment>http://www.blogjava.net/madshime/comments/271095.html</wfw:comment><comments>http://www.blogjava.net/madshime/archive/2009/05/17/271095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/madshime/comments/commentRss/271095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/madshime/services/trackbacks/271095.html</trackback:ping><description><![CDATA[&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br />
&lt;title&gt;双击文本实现可编辑&lt;/title&gt;<br />
&lt;style&gt;<br />
&lt;!--这李预先定义text的css展示效果--&gt;<br />
input.a {border:1px solid #fff;background:#fff;}<br />
input.b {border:1px solid #369;background:#fff;}<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;a href="http://www.jrose.cn"&gt;JavaScript之家欢迎你&lt;/a&gt;<br />
&lt;input class="a" id="inputText" readonly value="www.jrose.cn"&nbsp; type="text" /&gt;&lt;input type="submit" value="修改" style="display:none;" id="submit" /&gt;<br />
&lt;script type="text/javascript"&gt;<br />
/*<br />
在JavaScript中其实实现这种需求的方式有很多,这里只提供了其中的一种方法,<br />
就是先把当前text的css属性定义好,这样看起来好像是用了两个组件,一个text，一个label.<br />
实际上就只使用了一个text.当热第二种方法就是使用前面介绍的两个组件.规定到底都是DHTML的灵活运用.<br />
&lt;a href="http://www.jrose.cn"&gt;JavaScript之家&lt;/a&gt;<br />
*/<br />
var inputText = document.getElementById("inputText");<br />
var subm = document.getElementById("submit");<br />
//很简单的操作,注册两个函数<br />
inputText.ondblclick = function()<br />
{<br />
this.readOnly = false;<br />
this.className = "b";<br />
subm.style.display = "";<br />
}<br />
subm.onclick = function()<br />
{<br />
inputText.readOnly = true;<br />
inputText.className = "a";<br />
this.style.display = "none";<br />
}<br />
&lt;/script&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<img src ="http://www.blogjava.net/madshime/aggbug/271095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/madshime/" target="_blank">jrose</a> 2009-05-17 08:50 <a href="http://www.blogjava.net/madshime/archive/2009/05/17/271095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA TIMER用法学习</title><link>http://www.blogjava.net/madshime/archive/2009/05/13/270317.html</link><dc:creator>jrose</dc:creator><author>jrose</author><pubDate>Tue, 12 May 2009 22:36:00 GMT</pubDate><guid>http://www.blogjava.net/madshime/archive/2009/05/13/270317.html</guid><wfw:comment>http://www.blogjava.net/madshime/comments/270317.html</wfw:comment><comments>http://www.blogjava.net/madshime/archive/2009/05/13/270317.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/madshime/comments/commentRss/270317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/madshime/services/trackbacks/270317.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: center" align="center"><strong><span style="font-size: 22pt; font-family: 宋体"><a href="http://www.jrose.cn/">JAVA TIMER用法学习</a></span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;</span><a href="http://www.jrose.cn/"><span style="font-size: 12pt; font-family: 宋体"> Timer</a></span><span style="font-size: 12pt; font-family: 宋体">类是用来执行任务的类，它接受一个TimerTask做参数 </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp; Timer</span><span style="font-size: 12pt; font-family: 宋体">有两种执行任务的模式,最常用的是</span><a href="http://www.jrose.cn/"><span style="font-size: 12pt; font-family: 宋体">schedule</a></span><span style="font-size: 12pt; font-family: 宋体">,</span><span style="font-size: 12pt; font-family: 宋体">它可以以两种方式执行任务:1:在某个时间(Data)，2:在某个固定的时间之后(int delay).这两种方式都可以指定任务执行的频率.看个简单的例子: </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体"><br clear="all" />
</span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
</span><span style="font-size: 12pt; color: blue; font-family: 宋体">import</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;java.io.IOException;<br />
</span><span style="font-size: 12pt; color: blue; font-family: 宋体">import</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;java.util.Timer;<br />
<br />
</span><span style="font-size: 12pt; color: blue; font-family: 宋体">public</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">class</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;TimerTest&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">public</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">static</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">void</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;main(String[]&nbsp;args)</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体">54com.cn</span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Timer&nbsp;timer&nbsp;=&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">new</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;Timer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.schedule(</span><span style="font-size: 12pt; color: blue; font-family: 宋体">new</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;MyTask(),&nbsp;1000,&nbsp;2000);//</span><span style="font-size: 12pt; color: black; font-family: 宋体">在1秒后执行此任务,每次间隔2秒,如果传递一个</span><a href="http://www.jrose.cn/"><span style="font-size: 12pt; font-family: 宋体">Data</a></span><span style="font-size: 12pt; color: black; font-family: 宋体">参数,就可以在某个固定的时间执行这个任务.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">while</span><span style="font-size: 12pt; color: black; font-family: 宋体">(</span><span style="font-size: 12pt; color: blue; font-family: 宋体">true</span><span style="font-size: 12pt; color: black; font-family: 宋体">)</span><span style="font-size: 12pt; color: black; font-family: 宋体">{//</span><span style="font-size: 12pt; color: black; font-family: 宋体">这个是用来停止此任务的,否则就一直循环执行此任务了<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">try</span>&nbsp;<span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">int</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;ch&nbsp;=&nbsp;System.in.read();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">if</span><span style="font-size: 12pt; color: black; font-family: 宋体">(ch-'c'==0)</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.cancel();//</span><span style="font-size: 12pt; color: black; font-family: 宋体">使用这个方法退出任务<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">catch</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;(IOException&nbsp;e)&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: green; font-family: 宋体">//&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block<br />
</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">static</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">class</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;MyTask&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">extends</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;java.util.TimerTask</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">public</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">void</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;run()&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: green; font-family: 宋体">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub<br />
</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("________");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;} </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
<br />
<br />
</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">如果你使用的是JDK 5+,还有一个</span><a href="http://www.jrose.cn/"><span style="font-size: 12pt; font-family: 宋体">scheduleAtFixedRate</a></span><span style="font-size: 12pt; font-family: 宋体">模式可以用,在这个模式下,Timer会尽量的让任务在一个固定的频率下运行,举例说明:在上面的例子中,我们想让MyTask在1秒钟后,每两秒钟执行一次,但是因为java不是实时的(其实java实时性很差.....),所以,我们在上个程序中表达的原义并不能够严格执行.如果我们调用的是scheduleAtFixedRate,那么,Timer会尽量让你的Task执行的频率保持在2秒一次.运行上面的程序,假设使用的是scheduleAtFixedRate,那么下面的场景就是可能的:1秒钟后,MyTask&nbsp;执行一次,因为系统繁忙,之后的2.5秒后</span><a href="http://www.jrose.cn/"><span style="font-size: 12pt; font-family: 宋体">MyTask</a></span>&nbsp;<span style="font-size: 12pt; font-family: 宋体">才得以执行第二次,然后,Timer记下了这个延迟,并尝试在下一个任务的时候弥补这个延迟,那么,1.5秒后,MyTask&nbsp;将执行的三次."以固定的频率而不是固定的延迟时间去执行一个任务" </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">下面给出一个复杂点的例子,其中告诉大家怎么退出单个TimerTask,怎么退出所有Task </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: blue; font-family: 宋体">package</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;MyTimerTest;<br />
<br />
</span><span style="font-size: 12pt; color: blue; font-family: 宋体">import</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;java.io.IOException;<br />
</span><span style="font-size: 12pt; color: blue; font-family: 宋体">import</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;java.util.Timer; </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
<br />
<br />
</span><span style="font-size: 12pt; color: green; font-family: 宋体">/* JavaScript</span><span style="font-size: 12pt; color: green; font-family: 宋体">之家http://www.jorse.cn<br />
&nbsp;*&nbsp;本类给出了使用Timer和TimerTaske的主要方法,其中包括定制任务,添加任务<br />
&nbsp;*&nbsp;退出任务,退出定时器.<br />
&nbsp;*&nbsp;因为TimerTask的status域是包级可访问的,所以没有办法在java.util.包外<br />
&nbsp;*&nbsp;得到其状态,这对编程造成一些不便&nbsp;.我们不能判断某个Task的状态了.<br />
&nbsp;*&nbsp;<br />
&nbsp;*/</span><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
<br />
</span><span style="font-size: 12pt; color: blue; font-family: 宋体">public</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">class</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;TimerTest&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">public</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">static</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">void</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Timer&nbsp;timer&nbsp;=&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">new</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;Timer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyTask&nbsp;myTask1&nbsp;=&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">new</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;MyTask();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyTask&nbsp;myTask2&nbsp;=&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">new</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;MyTask(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTask2.setInfo("myTask-2");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.schedule(myTask1,&nbsp;1000,&nbsp;2000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.scheduleAtFixedRate(myTask2,&nbsp;2000,&nbsp;3000); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">while</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;(</span><span style="font-size: 12pt; color: blue; font-family: 宋体">true</span><span style="font-size: 12pt; color: black; font-family: 宋体">)&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体">feedom.net</span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">try</span>&nbsp;<span style="font-size: 12pt; color: black; font-family: 宋体">{ </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">byte</span><span style="font-size: 12pt; color: black; font-family: 宋体">[]&nbsp;info&nbsp;=&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">new</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">byte</span><span style="font-size: 12pt; color: black; font-family: 宋体">[1024];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">int</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;len&nbsp;=&nbsp;System.in.read(info); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;strInfo&nbsp;=&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">new</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;String(info,&nbsp;0,&nbsp;len,&nbsp;"GBK");</span><span style="font-size: 12pt; color: green; font-family: 宋体">//</span><span style="font-size: 12pt; color: green; font-family: 宋体">从控制台读出信息<br />
</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">if</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;(strInfo.charAt(strInfo.length()&nbsp;-&nbsp;1)&nbsp;==&nbsp;' ')&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strInfo&nbsp;=&nbsp;strInfo.substring(0,&nbsp;strInfo.length()&nbsp;-&nbsp;2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">if</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;(strInfo.startsWith("Cancel-1"))&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTask1.cancel();</span><span style="font-size: 12pt; color: green; font-family: 宋体">//</span><span style="font-size: 12pt; color: green; font-family: 宋体">退出单个任务<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;其实应该在这里判断</span><a href="http://www.jrose.cn/"><span style="font-size: 12pt; font-family: 宋体">myTask2</a></span><span style="font-size: 12pt; color: green; font-family: 宋体">是否也退出了,是的话就应该break.但是因为无法在包外得到<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;myTask2的状态,所以,这里不能做出是否退出循环的判断. <br />
</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">else</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">if</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;(strInfo.startsWith("Cancel-2"))&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体">feedom.net</span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTask2.cancel();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">else</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">if</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;(strInfo.startsWith("Cancel-All"))&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体">JavaScript</span><span style="font-size: 12pt; color: black; font-family: 宋体">之家http://www.jorse.cn</span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer.cancel();</span><span style="font-size: 12pt; color: green; font-family: 宋体">//</span><span style="font-size: 12pt; color: green; font-family: 宋体">退出Timer<br />
</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">break</span><span style="font-size: 12pt; color: black; font-family: 宋体">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">else</span>&nbsp;<span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: green; font-family: 宋体">//&nbsp;</span><span style="font-size: 12pt; color: green; font-family: 宋体">只对myTask1作出判断,偷个懒^_^<br />
</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTask1.setInfo(strInfo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">catch</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;(IOException&nbsp;e)&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: green; font-family: 宋体">//&nbsp;TODO&nbsp;Auto-generated&nbsp;catch&nbsp;block<br />
</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体">JavaScript</span><span style="font-size: 12pt; color: black; font-family: 宋体">之家http://www.jorse.cn<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">static</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">class</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;MyTask&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">extends</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;java.util.TimerTask&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体">54com.cn</span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;info&nbsp;=&nbsp;"^_^";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">public</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">void</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;run()&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: green; font-family: 宋体">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub<br />
</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(info);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">public</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;String&nbsp;getInfo()&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">return</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;info;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">public</span>&nbsp;<span style="font-size: 12pt; color: blue; font-family: 宋体">void</span><span style="font-size: 12pt; color: black; font-family: 宋体">&nbsp;setInfo(String&nbsp;info)&nbsp;</span><span style="font-size: 12pt; color: black; font-family: 宋体">{ </span></p>
<p style="background: #e6e6e6; word-break: break-all; text-align: left" align="left"><span style="font-size: 12pt; color: black; font-family: 宋体"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 12pt; color: blue; font-family: 宋体">this</span><span style="font-size: 12pt; color: black; font-family: 宋体">.info&nbsp;=&nbsp;info;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
} </span><span style="font-size: 12pt; color: white; font-family: 宋体">JavaScript</span><span style="font-size: 12pt; color: white; font-family: 宋体">之家http://www.jorse.cn</span></p>
<img src ="http://www.blogjava.net/madshime/aggbug/270317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/madshime/" target="_blank">jrose</a> 2009-05-13 06:36 <a href="http://www.blogjava.net/madshime/archive/2009/05/13/270317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MYSQL存储过程</title><link>http://www.blogjava.net/madshime/archive/2009/05/12/270141.html</link><dc:creator>jrose</dc:creator><author>jrose</author><pubDate>Mon, 11 May 2009 20:25:00 GMT</pubDate><guid>http://www.blogjava.net/madshime/archive/2009/05/12/270141.html</guid><wfw:comment>http://www.blogjava.net/madshime/comments/270141.html</wfw:comment><comments>http://www.blogjava.net/madshime/archive/2009/05/12/270141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/madshime/comments/commentRss/270141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/madshime/services/trackbacks/270141.html</trackback:ping><description><![CDATA[<p align="center">&nbsp;</p>
&nbsp;
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">drop procedure if exists pro_rep_shadow_rs;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">delimiter |</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">----------------------------------</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- rep_shadow_rs</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- </span><span style="font-size: 12pt; font-family: 宋体">用来处理信息的增加</span><span style="font-size: 12pt; font-family: 宋体">，</span><span style="font-size: 12pt; font-family: 宋体"><a href="http://www.jrose.cn/">更新和删除</a></span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- </span><span style="font-size: 12pt; font-family: 宋体">每次只更新上次以来没有做过的数据</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- 根据不同的标志位</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- 需要一个输出的参数，</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- 如果返回为0，则调用失败，事务回滚</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- 如果返回为1，调用成功，事务提交</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">--</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- <a href="http://www.jrose.cn/">测试</a>方法</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- call pro_rep_shadow_rs(@rtn);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- select @rtn;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">----------------------------------</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">create procedure pro_rep_shadow_rs(out rtn int)</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">begin</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- 声明变量，所有的声明必须在非声明的语句前面</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">declare iLast_rep_sync_id int default -1;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; declare iMax_rep_sync_id int default -1;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">-- 如果出现异常，或自动处理并rollback,但不再通知调用方了</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- 如果希望应用获得异常，需要将下面这一句，以及启动事务和<a href="http://www.jrose.cn/">提交事务</a>的语句全部去掉</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">declare exit handler for sqlexception rollback;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">查找上一次的</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; select eid into iLast_rep_sync_id from rep_de_proc_log where tbl='rep_shadow_rs';</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">-- 如果不存在，则增加一行</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">if iLast_rep_sync_id=-1 then</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; &nbsp;insert into rep_de_proc_log(rid,eid,tbl) values(0,0,'rep_shadow_rs');</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; &nbsp;set iLast_rep_sync_id = 0;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; end if;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">下一个数字</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; set iLast_rep_sync_id=iLast_rep_sync_id+1;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体"><a href="http://www.jrose.cn/">设置默认</a>的返回值为</span><span style="font-size: 12pt; font-family: 宋体">0</span><span style="font-size: 12pt; font-family: 宋体">：</span><span style="font-size: 12pt; font-family: 宋体">失败</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; set rtn=0;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">启动事务</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; start transaction;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">查找最大编号</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; select max(rep_sync_id) into iMax_rep_sync_id from rep_shadow_rs;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">有新数据</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; if iMax_rep_sync_id&gt;=iLast_rep_sync_id then</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">调用</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call pro_rep_shadow_rs_do(iLast_rep_sync_id,iMax_rep_sync_id);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体"><a href="http://www.jrose.cn/">更新日志</a></span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update rep_de_proc_log set rid=iLast_rep_sync_id,eid=iMax_rep_sync_id where tbl='rep_shadow_rs';</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; end if;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">运行没有异常</span><span style="font-size: 12pt; font-family: 宋体">，</span><span style="font-size: 12pt; font-family: 宋体">提交事务</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; commit;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">设置返回值为</span><span style="font-size: 12pt; font-family: 宋体">1</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; set rtn=1;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">end;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">|</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">delimiter ;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">drop procedure if exists pro_rep_shadow_rs_do;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">delimiter |</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">---------------------------------</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- 处理指定编号范围内的<a href="http://www.jrose.cn/">数据</a></span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- 需要输入2个参数</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- last_rep_sync_id 是编号的最小值</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- max_rep_sync_id 是编号的最大值</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">-- 无返回值</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">---------------------------------</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">create procedure pro_rep_shadow_rs_do(last_rep_sync_id int, max_rep_sync_id int)</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">begin</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; declare iRep_operationtype varchar(1);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; declare iRep_status varchar(1);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; declare iRep_Sync_id int;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; declare iId int;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">这个用于处理游标到达<a href="http://www.jrose.cn/">最后一行</a>的情况</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; declare stop int default 0;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">声明游标</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; declare cur cursor for select id,Rep_operationtype,iRep_status,rep_sync_id from rep_shadow_rs where rep_sync_id between last_rep_sync_id and max_rep_sync_id;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">-- 声明游标的<a href="http://www.jrose.cn/">异常处理</a>，设置一个终止标记</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop=1;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">打开游标</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; open cur;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">读取一行<a href="http://www.jrose.cn/">数据</a>到变量</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; fetch cur into iId,iRep_operationtype,iRep_status,iRep_Sync_id;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">-- 这个就是判断是否游标已经到达了最后</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; while stop &lt;&gt; 1 do</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 各种判断</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if iRep_operationtype='I' then</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insert into rs0811 (id,fnbm) select id,fnbm from rep_shadow_rs where rep_sync_id=iRep_sync_id;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">elseif iRep_operationtype='U' then</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if iRep_status='A' then</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insert into rs0811 (id,fnbm) select id,fnbm from rep_shadow_rs where rep_sync_id=iRep_sync_id;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elseif iRep_status='B' then</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete from rs0811 where id=iId;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elseif iRep_operationtype='D' then</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete from rs0811 where id=iId;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">读取下一行的数据</span><span style="font-size: 12pt; font-family: 宋体">&nbsp;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fetch cur into iId,iRep_operationtype,iRep_status,iRep_Sync_id;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; end while; &nbsp;&nbsp; -- </span><span style="font-size: 12pt; font-family: 宋体">循环结束</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; font-family: 宋体">close cur; -- 关闭<a href="http://www.jrose.cn/">游标</a></span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">&nbsp;end;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">|</span></p>
<img src ="http://www.blogjava.net/madshime/aggbug/270141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/madshime/" target="_blank">jrose</a> 2009-05-12 04:25 <a href="http://www.blogjava.net/madshime/archive/2009/05/12/270141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java处理json学习</title><link>http://www.blogjava.net/madshime/archive/2009/05/11/269973.html</link><dc:creator>jrose</dc:creator><author>jrose</author><pubDate>Sun, 10 May 2009 22:27:00 GMT</pubDate><guid>http://www.blogjava.net/madshime/archive/2009/05/11/269973.html</guid><wfw:comment>http://www.blogjava.net/madshime/comments/269973.html</wfw:comment><comments>http://www.blogjava.net/madshime/archive/2009/05/11/269973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/madshime/comments/commentRss/269973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/madshime/services/trackbacks/269973.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-size: 10.5pt; color: #2a2a2a">&nbsp; php5</span><span style="font-size: 10.5pt; color: #2a2a2a">处理json就2个函数；方便的很；但常用的java处理起来就很麻烦；通常用</span><span style="font-size: 10pt; color: #c60a00">JSON</span><span style="font-size: 10pt; color: #2a2a2a">-lib</span><span style="font-size: 10pt; color: #2a2a2a">许多包；</span></p>
<p><span style="font-size: 10pt; color: #2a2a2a">我总结了一个简单的java处理<a href="http://www.jrose.cn/">json</a>的方法如下：</span></p>
<p><span style="font-size: 10pt; color: #2a2a2a">1</span><span style="font-size: 10pt; color: #2a2a2a">：下载另外一个<a href="http://www.jrose.cn/">java</a>的小包就可以了；&nbsp; <a href="http://www.json.org/java/json_simple.zip">http://www.JSON.org/java/json_simple.zip</a></span></p>
<p><span style="font-size: 10pt; color: #2a2a2a">里面有源码和文档例题和编程的lib包；编程只需要json_simple.jar这个包就行；才10几k。</span></p>
<p><span style="font-size: 10pt; color: #2a2a2a">2</span><span style="font-size: 10pt; color: #2a2a2a">：在后端java中</span><span style="color: #2a2a2a">解析<a href="http://www.jrose.cn/">json</a>的代码</span><span style="font-size: 10pt; color: #2a2a2a">：</span></p>
<p><span style="font-size: 10pt; color: #2a2a2a">a</span><span style="font-size: 10pt; color: #2a2a2a">：把json字符串变成java数组对象形式：</span></p>
<p><span style="font-size: 10.5pt; color: #2a2a2a">String s="[0,{""1"":{""2"":{""3"":{""4"":[5,{""6"":7}]}}}}]";<br />
&nbsp; Object obj=JSONValue.parse(s);<br />
&nbsp; JSONArray array=(JSONArray)obj;<br />
&nbsp; System.out.println(array.get(1));<br />
b</span><span style="font-size: 10.5pt; color: #2a2a2a">：</span><span style="font-size: 10pt; color: #2a2a2a">把java对象形式变成<a href="http://www.jrose.cn/">json</a>字符串：</span></p>
<p><span style="font-size: 10.5pt; color: #2a2a2a">&nbsp; JSONObject obj2=new JSONObject();<br />
&nbsp; obj2.put("phone","123456");<br />
&nbsp; obj2.put("zip","7890");<br />
&nbsp; obj.put("contact",obj2);<br />
&nbsp; System.out.print(obj);</span></p>
<p><span style="font-size: 10.5pt; color: #2a2a2a">c</span><span style="font-size: 10.5pt; color: #2a2a2a">：</span><span style="font-size: 10pt; color: #2a2a2a">把java数组形式变成json<a href="http://www.jrose.cn/">字符串</a>：</span></p>
<p><span style="font-size: 10.5pt; color: #2a2a2a">&nbsp; JSONArray array=new JSONArray();<br />
&nbsp; array.add("hello");<br />
&nbsp; array.add(new Integer(123));<br />
&nbsp; array.add(new Boolean(false));<br />
&nbsp; array.add(null);<br />
&nbsp; array.add(new Double(123.45));<br />
&nbsp; array.add(obj2);//see above<br />
&nbsp; System.out.print(array);</span></p>
<p><span style="font-size: 10.5pt; color: #2a2a2a">3</span><span style="font-size: 10.5pt; color: #2a2a2a">：在前端的<a href="http://www.jrose.cn/">javascript</a>中解析json的代码：</span></p>
<p><span style="font-size: 10.5pt; color: #2a2a2a">var Json = {//</span><span style="font-size: 10.5pt; color: #2a2a2a">把javascript的数组或对象转换成<a href="http://www.jrose.cn/">Json格式的字符串</a><br />
&nbsp;toString: function(obj){<br />
&nbsp;switch(typeof(obj)){<br />
&nbsp;&nbsp;&nbsp;case 'string':<br />
&nbsp;&nbsp;&nbsp;&nbsp;return '"' + obj.replace(/(["<a href="file://])/g">""])/g</a>, '""$1') + '"';<br />
&nbsp;&nbsp;&nbsp;case 'array':<br />
&nbsp;&nbsp;&nbsp;&nbsp;return '[' + obj.map(Json.toString).join(',') + ']';<br />
&nbsp;&nbsp;&nbsp;case 'object':<br />
&nbsp;&nbsp;&nbsp;&nbsp;var string = [];<br />
&nbsp;&nbsp;&nbsp;&nbsp;for (var property in obj) string.push(Json.toString(property) + ':' + Json.toString(obj[property]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;return '{' + string.join(',') + '}';<br />
&nbsp;&nbsp;&nbsp;case 'number':<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (isFinite(obj)) break;<br />
&nbsp;&nbsp;&nbsp;case false:<br />
&nbsp;&nbsp;&nbsp;&nbsp;return 'null';<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return String(obj);<br />
&nbsp;},//把<a href="http://www.jrose.cn/">Json格式</a>的字符串转换成<a href="http://www.jrose.cn/">javascript</a>的数组或对象<br />
&nbsp;evaluate: function(str, secure){<br />
&nbsp;&nbsp;return ((typeof(str) != 'string') || (secure &amp;&amp; !str.test(/^("(<a href="file://.%7c[%5e/">"".|[^""""n"r])*?"|[,:{}"["]0-9."-+Eaeflnr-u</a> "n"r"t])+?$/))) ? null : eval('(' + str + ')');<br />
&nbsp;}<br />
}</span></p>
<img src ="http://www.blogjava.net/madshime/aggbug/269973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/madshime/" target="_blank">jrose</a> 2009-05-11 06:27 <a href="http://www.blogjava.net/madshime/archive/2009/05/11/269973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>