??xml version="1.0" encoding="utf-8" standalone="yes"?>国产在亚洲线视频观看,亚洲熟妇av一区二区三区漫画,中文字幕亚洲无线码http://www.tkk7.com/wangyugod/archive/2008/01/30/178483.html船夫船夫Wed, 30 Jan 2008 03:14:00 GMThttp://www.tkk7.com/wangyugod/archive/2008/01/30/178483.htmlhttp://www.tkk7.com/wangyugod/comments/178483.htmlhttp://www.tkk7.com/wangyugod/archive/2008/01/30/178483.html#Feedback5http://www.tkk7.com/wangyugod/comments/commentRss/178483.htmlhttp://www.tkk7.com/wangyugod/services/trackbacks/178483.html阅读全文

船夫 2008-01-30 11:14 发表评论
]]>
JSP~译q程http://www.tkk7.com/wangyugod/archive/2007/12/18/168444.html船夫船夫Tue, 18 Dec 2007 04:06:00 GMThttp://www.tkk7.com/wangyugod/archive/2007/12/18/168444.htmlhttp://www.tkk7.com/wangyugod/comments/168444.htmlhttp://www.tkk7.com/wangyugod/archive/2007/12/18/168444.html#Feedback0http://www.tkk7.com/wangyugod/comments/commentRss/168444.htmlhttp://www.tkk7.com/wangyugod/services/trackbacks/168444.html很久以来Q都知道JSP其实是ServletQ今天心血来潮Q想把里面的具体代码看一遍,q记录心得?br /> 一个编译好的JSPcd下:
public
 final class index_jsp extends HttpJspBase
    
implements JspSourceDependent
//上述cMؓindex.jsp被编译后得到的类
//HttpJspBase是extends HttpServlet的一个类
//JspSourceDependent是一个接口,只声明了一个方法、、getDependants(),q回当前page所依赖的文件的名称Q文件包括以下几U?br /> //1) files that are included by page directives 
//2) files that are included by include-prelude and include-coda in jsp:config 
//3) files that are tag files and referenced 
//4) TLDs referenced 其核心方法ؓQ?br />
  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        
throws IOException, ServletException{
.
}
该方法重载HttpJspBase中的_jspServiceҎQ进行页面解析,包括对scriptlet的加载,html的生成,自定义Tag的解析等{?br /> HttpJspBase的service再对_jspService再进行调用,最l生成HTML面


船夫 2007-12-18 12:06 发表评论
]]>
Annotation初步了解http://www.tkk7.com/wangyugod/archive/2007/12/17/168264.html船夫船夫Mon, 17 Dec 2007 08:33:00 GMThttp://www.tkk7.com/wangyugod/archive/2007/12/17/168264.htmlhttp://www.tkk7.com/wangyugod/comments/168264.htmlhttp://www.tkk7.com/wangyugod/archive/2007/12/17/168264.html#Feedback1http://www.tkk7.com/wangyugod/comments/commentRss/168264.htmlhttp://www.tkk7.com/wangyugod/services/trackbacks/168264.html
annotation实际上就是给一些特定的cd其属性,Ҏ{加上一些注?annotation),q些注释是以属性name,valueq行讄的,q些属性在Annotation Class中以Ҏ的Ş式存在,如下Q?
@Documented                //是否需要生javadoc
@Target(java.lang.annotation.ElementType.METHOD)   //应用目标Q这里是应用到field属性上?br /> @Retention(RetentionPolicy.RUNTIME)   //该策略指明该注释会被加蝲到jvm中,卛_q行Ӟ我们可以得到该注释的内容Q另外两个策略,SOURCE, CLASS都不会加载到jvm?br />
public @interface TestAnnoation {
    String value();   //属性value
    String time();     //属性time
}
以上定义的annotation,是应用在成员变量上的Q用该annotation情况如下
public class Test {
    @TestAnnoation(time
="12:30",value="20")
    
public String test(){
          System.out.println("test!");
          return null;
    };
}

可以使用java的反来q行获取Q通过Q?br />
Class cls = Class.forName("Test");
cls.isAnnotationPresent(AnnotationClass.
class);//判断是否存在annotation
TestAnnotation ta = (TestAnnotation)cls.getAnnotation(AnnotationClass.class);//获得AnnotationClass实例Q后调用q个实例可以获得在AnnotationClass中定义的一些属?/span>
System.out.println(ta.time()); //输出注释time内容
System.out.println(ta.value()); //输出注释value内容

我个为annotation的好处是一些配|直接写在代码上Q很直观Q以前在使用hibernate的时候,PO对象和对应的mapping xml是分开的,不够直观Q若是用annotation׃很直观的看出q个对象的映属性以及它的一些特D属性(如lazy=trueQ之cȝQ在JPA中就把这U配|方式换成了annotation?br />
在JE上有很多关于使用annotation和xml的争论,我认为在规模用上可以使用annotationQ就像JPAq种Q每个PO上面都需要进行配|,即使用XML也不能简化;而在大规模用,如spring所l护的一些service的事务配|上避免使用annotationQ因为每个servicecM都需要配|,而用AOPҎXML配置可以一下就搞定?br />
关于ElementType的其他属性:
TYPE(cd), FIELD(属?, METHOD(Ҏ), PARAMETER(参数), CONSTRUCTOR(构造函?,LOCAL_VARIABLE(局部变?, ANNOTATION_TYPE,PACKAGE(?,其中的TYPE(cd)是指可以用在Class,Interface,Enum? Annotationcd?



船夫 2007-12-17 16:33 发表评论
]]>
XSL取得当前循环的位|?/title><link>http://www.tkk7.com/wangyugod/archive/2007/12/14/167723.html</link><dc:creator>船夫</dc:creator><author>船夫</author><pubDate>Fri, 14 Dec 2007 03:33:00 GMT</pubDate><guid>http://www.tkk7.com/wangyugod/archive/2007/12/14/167723.html</guid><wfw:comment>http://www.tkk7.com/wangyugod/comments/167723.html</wfw:comment><comments>http://www.tkk7.com/wangyugod/archive/2007/12/14/167723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wangyugod/comments/commentRss/167723.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wangyugod/services/trackbacks/167723.html</trackback:ping><description><![CDATA[最q在一个项目中用到了XSLT,目的是将q回的XML数据记录通过XSL转换为HTMLQ在for-each的@环中取得当前记录的位|,通过实践Q找C解决的办法,主要是用xsl的position函数<br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080;">1</span> <span style="color: #000000;"><</span><span style="color: #000000;">xsl:</span><span style="color: #0000ff;">for</span><span style="color: #000000;">-</span><span style="color: #000000;">each select</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">QRoleInline-list/QRoleInline</span><span style="color: #000000;">"</span><span style="color: #000000;">></span><span style="color: #000000;"><br /> </span><span style="color: #008080;">2</span> <span style="color: #000000;"><</span><span style="color: #000000;">xsl:</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> test</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">not(position() = 1)</span><span style="color: #000000;">"</span><span style="color: #000000;">><</span><span style="color: #000000;">xsl:text</span><span style="color: #000000;">></span><span style="color: #000000;">,</span><span style="color: #000000;"></</span><span style="color: #000000;">xsl:text</span><span style="color: #000000;">></</span><span style="color: #000000;">xsl:</span><span style="color: #0000ff;">if</span><span style="color: #000000;">><</span><span style="color: #000000;">xsl:value</span><span style="color: #000000;">-</span><span style="color: #000000;">of select</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">@roleName</span><span style="color: #000000;">"</span><span style="color: #000000;">/></span><span style="color: #000000;"><br /> </span><span style="color: #008080;">3</span> <span style="color: #000000;"></</span><span style="color: #000000;">xsl:</span><span style="color: #0000ff;">for</span><span style="color: #000000;">-</span><span style="color: #000000;">each</span><span style="color: #000000;">><br /> </span></div> 使用position函数可以取得当前行在循环中的位置Q从1开始。上qC码是判断如果位置为第一个, 则需要加逗号?br /> <br /> q有一个函数current()是负责取到当前节点对象的?br /> <img src ="http://www.tkk7.com/wangyugod/aggbug/167723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wangyugod/" target="_blank">船夫</a> 2007-12-14 11:33 <a href="http://www.tkk7.com/wangyugod/archive/2007/12/14/167723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>走出ClassLoaderq局 --转至sharajava的博克http://www.tkk7.com/sharajava/archive/2006/07/25/59946.htmlhttp://www.tkk7.com/wangyugod/archive/2006/07/27/60363.html船夫船夫Thu, 27 Jul 2006 07:23:00 GMThttp://www.tkk7.com/wangyugod/archive/2006/07/27/60363.htmlhttp://www.tkk7.com/wangyugod/comments/60363.htmlhttp://www.tkk7.com/wangyugod/archive/2006/07/27/60363.html#Feedback0http://www.tkk7.com/wangyugod/comments/commentRss/60363.htmlhttp://www.tkk7.com/wangyugod/services/trackbacks/60363.html {?/span> : q个问题l常出现在编写框架代?/span> , 需要动态加载很多类和资源的时?/span> . 通常当你需要动态加载资源的时?/span> , 你至有三个 ClassLoader 可以选择 :

̔        pȝcd载器或叫作应用类加蝲?/span> (system classloader or application classloader)

̔        当前cd载器

̔        当前U程cd载器

上面的问题指的是最后一U类加蝲?/span> . 哪种cd载器是正的选择?/span> ?

W一U选择可以很容易地排除 : pȝcd载器 (system classloader). q个cd载器处理 -classpath 下的cd载工?/span> , 可以通过 ClassLoader.getSystemClassLoader() Ҏ调用 . ClassLoader 下所有的 getSystemXXX() 的静态方法都是通过q个Ҏ定义?/span> . 在你的代码中 , 你应该尽量少地调用这个方?/span> , 以其它的cd载器作ؓ代理 . 否则你的代码只能工作在单的命o行应用中 , q个时候系l类加蝲?/span> (system classloader) ?/span> JVM 最后创建的cd载器 . 一但你把代码移?/span> EJB, Web 应用?/span> Java Web Start 应用?/span> , 一定会出问?/span> .

      所以我们来看第二种选择 : 当前上下文环境下的类加蝲?/span> . Ҏ定义 , 当前cd载器是你当前方法所属的cȝ加蝲?/span> . 在运行时cM间动态联~?/span> , 及调?/span> Class.forName,() Class.getResource() {类似方法时 , q个cd载器会被隐含C?/span> . It is also used by syntactic constructs like X.class class literals.

    U程上下文类型加载器是在Java 2q_上被引入?span lang="EN-US">. 每一个线E都有一个类加蝲器与之对?span lang="EN-US">(除非q个U程是被本地代码创徏?span lang="EN-US">). q个cd载器是通过Thread.setContextClassLoaser()Ҏ讄?span lang="EN-US">. 如果你不在线E构造后调用q个Ҏ, q个U程从它的父线E中l承相应的上下文cd载器. 如果在整个应用中你不做Q何特D设|?span lang="EN-US">, 所有的U程都以系l类加蝲?span lang="EN-US">(system classloader)作ؓ自己的线E上下文cd载器. 自从Web?span lang="EN-US">J2EE应用服务器用成熟的cd载器机制来实现诸?span lang="EN-US">JNDI, U程?span lang="EN-US">, lg热部|等功能以来, q种在整个应用中不做MU程cd载器讄的情况就很少?span lang="EN-US">.

    Z么线E上下文cd载器存在于如此重要的位置?span lang="EN-US">? q个概念?span lang="EN-US">J2SE中的引入q不引h注目. 很多开发h员对q一概念qh的原因是Sun公司在这斚w~Z适当的指引和文档.

    事实?span lang="EN-US">, 上下文类加蝲器提供了cd载机制的后门, q一点也?span lang="EN-US">J2SE中被引入?span lang="EN-US">. 通常, ?span lang="EN-US">JVM中的所有类加蝲器被l织成了有承层ơ的l构, 每一个类加蝲?span lang="EN-US">(除了引导JVM的原始类加蝲?span lang="EN-US">)都有一个父加蝲?span lang="EN-US">. 每当被请C加载类?span lang="EN-US">, cd载器都会首先h其父cd载器, 只有当父cd载器不能加蝲?span lang="EN-US">, 才会自己q行cd?span lang="EN-US">.

   有时候这U类加蝲的顺序安排不能正常工?span lang="EN-US">, 通常当必d态加载应用程序开发h员提供的资源的时?span lang="EN-US">. ?span lang="EN-US">JNDIZ: 它的内容(?span lang="EN-US">J2SE1.3开?span lang="EN-US">)在rt.jar中的引导cM实现?span lang="EN-US">, 但是q些JNDI核心c需要动态加载由独立厂商实现q|在应用E序?span lang="EN-US">classpath下的JNDI提供?span lang="EN-US">. q种情况p求一个父classloader(本例, 是引导cd载器)d载对于它其中一个子classloader(本例, pȝcd载器)可见的类. q时通常的类加蝲代理机制不能实现q个要求. 解决的办?span lang="EN-US">(workaround)是, ?span lang="EN-US">JNDI核心cM用当前线E上下文的类加蝲?span lang="EN-US">, q样, 基本的cd载代理机制的相反方向建立了一条有效的途径.

    另外, 上面一D可能让你想起一些其它的事情: XML解析Java API(JAXP). 是的, ?span lang="EN-US">JAXP只是J2SE的扩展进, 它很自然地用当前cd载器来引D析器的实?span lang="EN-US">. 而当JAXP被加入到J2SE1.4的核心类库中?span lang="EN-US">, 它的cd载也改成了用当前线E类加蝲?span lang="EN-US">, ?span lang="EN-US">JNDI的情况完全类?span lang="EN-US">(也很多E序员很qh). 明白Z么我说来?span lang="EN-US">Sun的指导很~Z了吧?

   在以上的介绍之后, 我们来看关键问题: q两U选择(当前cd载器和当前线E类加蝲?span lang="EN-US">)都不是在所有环境下都适用. 有些为当前线E类加蝲器应该成为新的标准策?span lang="EN-US">. 但是, 如果q样, 当多个线E通过׃n数据q行交互的时, 会呈现Zq极其复杂的cd载的画面, 除非它们全部使用了同一个上下文的类加蝲?span lang="EN-US">. q一步说, 在某些遗留下来的解决Ҏ?span lang="EN-US">, 委派到当前类加蝲器的Ҏ已经是标?span lang="EN-US">. 比如?span lang="EN-US">Class.forName(String)的直接调?span lang="EN-US">(q也是我Z么推荐尽量避免对q个Ҏq行调用的原?span lang="EN-US">). 即你努力去只调用上下文相关的类加蝲?span lang="EN-US">, 仍然会有一些代码会不由你控?span lang="EN-US">. q种不受控制的类加蝲委派机制是؜入是很危险的.

    更严重的问题, 某些应用服务器把环境上下文及当前cd载器讄C同的cd载器实例?span lang="EN-US">, 而这些类加蝲器有相同的类路径但却没有委派机制中的父子关系. xqؓ什么十分可?span lang="EN-US">. 要知道类加蝲器定义ƈ加蝲的类实例会带有一?span lang="EN-US">JVM内部?span lang="EN-US">ID?span lang="EN-US">. 如果当前cd载器加蝲一个类X的实?span lang="EN-US">, q个实例调用JNDI查找c?span lang="EN-US">Y的实?span lang="EN-US">, 些时的上下文的类加蝲器也可以定义了加载类Y实例. q个c?span lang="EN-US">Y的定义就与当前类加蝲器看到的c?span lang="EN-US">Y的定义不?span lang="EN-US">. 如果q行强制cd转换, 则生异?span lang="EN-US">.

   q种混ؕ的情况还在Java中存在一D|?span lang="EN-US">. 对于那些需要动态加载资源的J2SE?span lang="EN-US">API, 我们来猜惛_们的cd{略. 例如:

Ø         JNDI 使用U程上下文类加蝲?span lang="EN-US">

Ø         Class.getResource() ?span lang="EN-US">Class.forName()使用当前cd载器

Ø         JAXP(J2SE 1.4 及之?span lang="EN-US">)使用U程上下文类加蝲?span lang="EN-US">

Ø         java.util.ResourceBundle 使用调用者的当前cd载器

Ø         URL protocol handlers specified via java.protocol.handler.pkgs system property are looked up in the bootstrap and system classloaders only

Ø         Java 序列?span lang="EN-US">API默认使用调用者当前的cd载器

q些cd资源的加载策略问?span lang="EN-US">, 肯定?span lang="EN-US">J2SE领域中文档最及说明最~Z的部分了.



船夫 2006-07-27 15:23 发表评论
]]>
目中遇到的一个Spring事务理的问?/title><link>http://www.tkk7.com/wangyugod/archive/2006/07/24/59870.html</link><dc:creator>船夫</dc:creator><author>船夫</author><pubDate>Mon, 24 Jul 2006 10:40:00 GMT</pubDate><guid>http://www.tkk7.com/wangyugod/archive/2006/07/24/59870.html</guid><wfw:comment>http://www.tkk7.com/wangyugod/comments/59870.html</wfw:comment><comments>http://www.tkk7.com/wangyugod/archive/2006/07/24/59870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wangyugod/comments/commentRss/59870.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wangyugod/services/trackbacks/59870.html</trackback:ping><description><![CDATA[今天从CVS上checkout目的时?出现了一个问?我以前写的模块功能本来是好的,但是checkout之后出了问?我想一定是配置文g更新出错?努力L,发现没有问题.后来l同事说他更改了一个方?而我的代码中有对那个Ҏ的调?l于知道了问题的所?<br />E序中抛出的异常?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">java.lang.IllegalStateException: No value </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> key [org.hibernate.impl.SessionFactoryImpl@7a3d45f0] bound to thread [Servlet.Engine.Transports : </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span></div>我发现是在我spring的seviceҎ中调用了他的Ҏ,他的Ҏ又调用了另一个serviceҎ,D出现了这个问?<br /><br />q个问题只要把他的那个方法修改一?或者从我的serviceҎ中移出就可以解决.<br /><br />我想spring中肯定应该有些配|能使两个serviceҎ处于同一个事务中,但是我还没找?希望知道的高手能提点一?谢谢<br /><img src ="http://www.tkk7.com/wangyugod/aggbug/59870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wangyugod/" target="_blank">船夫</a> 2006-07-24 18:40 <a href="http://www.tkk7.com/wangyugod/archive/2006/07/24/59870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在WSAD 5.1中用log4j遇到的问?/title><link>http://www.tkk7.com/wangyugod/archive/2006/07/21/59308.html</link><dc:creator>船夫</dc:creator><author>船夫</author><pubDate>Thu, 20 Jul 2006 17:23:00 GMT</pubDate><guid>http://www.tkk7.com/wangyugod/archive/2006/07/21/59308.html</guid><wfw:comment>http://www.tkk7.com/wangyugod/comments/59308.html</wfw:comment><comments>http://www.tkk7.com/wangyugod/archive/2006/07/21/59308.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/wangyugod/comments/commentRss/59308.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wangyugod/services/trackbacks/59308.html</trackback:ping><description><![CDATA[ <p>使用log4j作ؓ日志输出工具Q设|根U别为warnQ然后分别设|了hibernate和spring{的U别为debug,自己目的别也讄为debugQ但是很奇怪的事情出现了:<br />我启动wasd的测试服务器Q打出来的日志只有我本项目的debugU以上的信息Qspring和hibernate的都打不出来Q?br />我用main函数q行我项目中的一个方法,所有的debug信息Qspring和hibernate以及我本目的debug信息一样都没少?br />我的配置是绝Ҏ有问题的Q我实在想不出来怎么会出现这U问题,见鬼了,哪位高手遇到q这U情况,告知一下解x法,谢谢</p> <img src ="http://www.tkk7.com/wangyugod/aggbug/59308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wangyugod/" target="_blank">船夫</a> 2006-07-21 01:23 <a href="http://www.tkk7.com/wangyugod/archive/2006/07/21/59308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>表的外键U束[ZT]http://www.tkk7.com/wangyugod/archive/2006/03/16/35665.html船夫船夫Thu, 16 Mar 2006 07:44:00 GMThttp://www.tkk7.com/wangyugod/archive/2006/03/16/35665.htmlhttp://www.tkk7.com/wangyugod/comments/35665.htmlhttp://www.tkk7.com/wangyugod/archive/2006/03/16/35665.html#Feedback0http://www.tkk7.com/wangyugod/comments/commentRss/35665.htmlhttp://www.tkk7.com/wangyugod/services/trackbacks/35665.html1。创建测试表
SQL> create table lesson(lesson_name varchar2(20), classroom varchar2(10));

表已创徏?

SQL> create table teacher(name varchar2(20),lesson_name varchar2(20));

表已创徏?

SQL> alter table lesson add constraint pk_lesson primary key(lesson_name);

表已更改?

SQL> alter table teacher add constraint fk_lessonname foreign key(lesson_name)
2 references lesson(lesson_name);

表已更改?


2。插入测试数?
SQL> insert into lesson values('english','class 1');

已创?1 行?

SQL> insert into lesson values('music','class 2');

已创?1 行?


3。测试有外键的字D|否可以ؓI?
SQL> insert into teacher values('wang','hello');
insert into teacher values('wang','hello')
*
ERROR 位于W?1 ?
ORA-02291: q反完整U束条g (SYSTEM.FK_LESSONNAME) - 未找到父关键字

SQL> insert into teacher values('wang','music');

已创?1 行?

SQL> insert into teacher values('wang',null);

已创?1 行?


l论Q有外键U束的字D可以ؓI。如果不为空的话Q则一定要满外键的约束关p?/P>


船夫 2006-03-16 15:44 发表评论
]]>
java实现文g传输http://www.tkk7.com/wangyugod/archive/2005/12/20/24733.html船夫船夫Tue, 20 Dec 2005 03:22:00 GMThttp://www.tkk7.com/wangyugod/archive/2005/12/20/24733.htmlhttp://www.tkk7.com/wangyugod/comments/24733.htmlhttp://www.tkk7.com/wangyugod/archive/2005/12/20/24733.html#Feedback4http://www.tkk7.com/wangyugod/comments/commentRss/24733.htmlhttp://www.tkk7.com/wangyugod/services/trackbacks/24733.html阅读全文

船夫 2005-12-20 11:22 发表评论
]]>
Velocity ?/title><link>http://www.tkk7.com/wangyugod/archive/2005/12/01/22057.html</link><dc:creator>船夫</dc:creator><author>船夫</author><pubDate>Thu, 01 Dec 2005 00:36:00 GMT</pubDate><guid>http://www.tkk7.com/wangyugod/archive/2005/12/01/22057.html</guid><wfw:comment>http://www.tkk7.com/wangyugod/comments/22057.html</wfw:comment><comments>http://www.tkk7.com/wangyugod/archive/2005/12/01/22057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wangyugod/comments/commentRss/22057.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wangyugod/services/trackbacks/22057.html</trackback:ping><description><![CDATA[<div id="9fvxppb" class=comText>1.Velocity 的?<BR><BR>Velocity是一个开放源吗的模版引擎Q由apache.org组负责开发,现在最新的版本是Velocity1.3.1Q?A target=_blank>http://jakarta.apache.org/velocity/index.html</A> 可以了解Velocity的最C息?<BR>Velocity允许我们在模版中讑֮变量Q然后在q行Ӟ动态的数据插入到模版中,替换q些变量?<BR>例如Q?<BR><html> <BR><body>HELLO $CUSTOMERNAME</body> <BR></html> <BR>我们可以在运行时得到客户的名字,然后把它插入到这个模版中替换变量$CUSTOMERNAMEQ整个替换过E是由Velocityq行控制的,而且java的调用代码也非常单,如我们可以在java代码中这栯?<BR>/***********************************************************/ <BR>//q个文g中设定了Velocity使用的log4j的配|和Velocity的模版文件所在的目录 <BR>Velocity.init("D:\\Template\\resource\\jt.properties"); <BR>//模版文g名,模版文g所在的路径在上一条语句中已经讄?<BR>Template template = Velocity.getTemplate("hello.vm", "gb2312"); <BR>//实例化一个Context <BR>VelocityContext context = new VelocityContext(); <BR>//把模版变量的D|到context?<BR>context.put("CUSTOMERNAME", "My First Template Engine ---- Velocity."); <BR>//开始模版的替换 <BR>template.merge(context, writer); <BR>//写到文g?<BR>PrintWriter filewriter = new PrintWriter(new FileOutputStream(outpath),true); <BR>filewriter.println(writer.toString()); <BR>filewriter.close(); <BR>/***********************************************************/ <BR><BR>q就是整个java的代码,非常的简单。如果我们有多个模版变量Q我们仅需要把q些模版变量的D|到context中?<BR>下面我们单的分析一下,Velocity引擎d模板文gӞ它直接输出文件中所有的文本Q但?字符开头的除外Q?W号标识着一个模版变量位|, <BR>context.put("CUSTOMERNAME", "My First Template Engine ---- Velocity."); <BR>?Velocity 模板引擎解析q输出模板的l果Ӟ模板中所有出?CUSTOMERNAME的地斚w插入客L名字Q即被加入到VelocityContext的对象的toString()Ҏq回值将替代Velocity变量Q模板中?开头的变量Q?<BR>模板引擎中最强大、用最频繁的功能之一是它通过内徏的映像(ReflectionQ引擎查扑֯象信息的能力。这个映像引擎允许用一U方便的Java?”类似的操作W,提取L加入到VelocityContext的对象的M公用Ҏ的|或对象的L数据成员?<BR>映像引擎q带来了另外一个改q:快速引用JavaBean的属性。用JavaBean属性的时候,我们可以忽略getҎ和括受请看下面这个模板的例子?<BR><html> <BR><body> <BR>Name:$Customer.Name() <BR>Address:$Customer.Address() <BR>Age:$Customer.Age() <BR></body> <BR></html> <BR><BR>java的代码: <BR>/***********************************************************/ <BR>//讄客户信息 <BR>Customer mycustomer = new Customer(); <BR>mycustomer.setName("Velocity"); <BR>mycustomer.setAddress("jakarta.apache.org/velocity/index.html"); <BR>mycustomer.setAge(2); <BR>//q个文g中设定了 Velocity 使用?Log4j 的配|和Velocity的模版文件所在的目录Velocity.init("D:\\Template\\resource\\jt.properties"); <BR>//模版文g名,模版文g所在的路径在上一条语句中已经讄?<BR>Template template = Velocity.getTemplate("hello.vm", "gb2312"); <BR>//实例化一个Context <BR>VelocityContext context = new VelocityContext(); <BR>//把模版变量的D|到context?<BR>context.put("Customer", mycustomer); <BR>//开始模版的替换 <BR>template.merge(context, writer); <BR>//写到文g?<BR>PrintWriter filewriter = new PrintWriter(new FileOutputStream(outpath),true); <BR>filewriter.println(writer.toString()); <BR>filewriter.close(); <BR>输出l果Q?<BR><html> <BR><body> <BR>Name:Velocity <BR>Address:jakarta.apache.org/velocity/index.html <BR>Age:2 <BR></body> <BR></html> <BR>除了替换变量之外Q象Velocity高引擎q能做其他许多事情,它们有用来比较和q代的内建指令,通过q些指o我们可以完成E序语言中的条g判断语句和@环语句等?<BR>例如Q我们想要输出年龄等?的所有客L信息Q我们可以这样定义我们的模版 <BR>模版Q?<BR><html> <BR><body> <BR><table> <BR><tr> <BR><td>名称</td> <BR><td>地址</td> <BR><td>q龄</td> <BR></tr> <BR>#foreach ($Customer in $allCustomer) <BR>#if($Customer.Age()=="2") <BR><tr> <BR><td>$Customer.Name()</td> <BR><td>$Customer.Address()</td> <BR><td>$Customer.Age()</td> <BR></tr> <BR>#end <BR>#end <BR></table> <BR></body> <BR></html> <BR><BR>java的代码: <BR>/******************************************************/ <BR>//讄客户信息 <BR>ArrayList allMyCustomer = new ArrayList(); <BR>//客户1 <BR>Customer mycustomer1 = new Customer(); <BR>mycustomer1.setName("Velocity"); <BR>mycustomer1.setAddress("jakarta.apache.org/velocity/index.html"); <BR>mycustomer1.setAge(2); <BR>//客户2 <BR>Customer mycustomer2 = new Customer(); <BR>mycustomer2.setName("Tomcat"); <BR>mycustomer2.setAddress("jakarta.apache.org/tomcat/index.html"); <BR>mycustomer2.setAge(3); <BR>//客户3 <BR>Customer mycustomer3 = new Customer(); <BR>mycustomer3.setName("Log4J"); <BR>mycustomer3.setAddress("jakarta.apache.org/log4j/docs/index.html"); <BR>mycustomer3.setAge(2); <BR>//d到allMyCustomer(ArrayList)? <BR>allMyCustomer.add(mycustomer1); <BR>allMyCustomer.add(mycustomer2); <BR>allMyCustomer.add(mycustomer3); <BR>//q个文g中设定了Velocity使用的log4j的配|和Velocity的模版文件所在的?<BR>Velocity.init("D:\\Template\\resource\\jt.properties"); <BR>//模版文g名,模版文g所在的路径在上一条语句中已经讄?<BR>Template template =Velocity.getTemplate("hello.vm", "gb2312"); <BR>//实例化一个Context <BR>VelocityContext context = new VelocityContext(); <BR>/** 注意q里我们仅仅需要给一个模版变量负?*/ <BR>context.put("allCustomer", allMyCustomer); <BR>//开始模版的替换 <BR>template.merge(context, writer); <BR>//写到文g?<BR>PrintWriter filewriter = new PrintWriter(new FileOutputStream(outpath),true); <BR>filewriter.println(writer.toString()); <BR>filewriter.close(); <BR>/******************************************************/ <BR>l果Q?<BR><html> <BR><body> <BR><table> <BR><tr> <BR><td>名称</td> <BR><td>地址</td> <BR><td>q龄</td> <BR></tr> <BR><tr> <BR><td>Velocity</td> <BR><td>jakarta.apache.org/velocity/index.html</td> <BR><td>2</td> <BR></tr> <BR><tr> <BR><td>Log4J</td> <BR><td>jakarta.apache.org/log4j/docs/index.html</td> <BR><td>2</td> <BR></tr> <BR></table> <BR></body> <BR></html> <BR><BR>#if 语句完成逻辑判断Q这个我想不用多说了?<BR>allCustomer对象包含零个或者多个Customer对象。由于ArrayList (List, HashMap, HashTable, Iterator, Vector{?属于Java Collections Framework的一部分Q我们可以用#foreach指oq代其内宏V我们不用担心如何定型对象的cd——映像引擎会为我们完成这个Q务?foreach指o的一般格式是?foreach in ”?foreach指oq代listQ把list中的每个元素攑օitem参数Q然后解?foreach块内的内宏V对于list内的每个元素Q?foreach块的内容都会重复解析一ơ。从效果上看Q它相当于告诉模板引擎说Q“把list中的每一个元素依ơ放入item变量Q每ơ放入一个元素,输出一?foreach块的内容”?<BR><BR>2.MVC设计模型 <BR><BR>使用模板引擎最大的好处在于Q它分离了代码(或程序逻辑Q和表现Q输出)。由于这U分,你可以修改程序逻辑而不必担心邮件消息本w;cM圎ͼ你(或公关部门的职员Q可以在不重新编译程序的情况下,重新~写客户列表。实际上Q我们分Mpȝ的数据模式(Data ModelQ即提供数据的类Q、控制器QControllerQ即客户列表E序Q以及视图(ViewQ即模板Q。这U三层体pȝ为Model-View-Controller模型QMVCQ?<BR>如果遵从MVC模型Q代码分成三个截然不同的层,化了软g开发过E中所有相关h员的工作?<BR>l合模板引擎使用的数据模式可以是MJava对象Q最好是使用Java Collection Framework的对象。控制器只要了解模板的环境(如VelocityContextQ,一般这U环境都很容易用?<BR>一些关pL据库的“对?关系”映工兯够和模板引擎很好地协同,化JDBC操作Q对于EJBQ情形也cM?模板引擎与MVC中视图这一部分的关pL为密切。模板语a的功能很丰富、强大,以处理所有必需的视囑֊能,同时它往往很简单,不熟悉编E的Z可以使用它。模板语a不仅使得设计者从q于复杂的编E环境中解脱出来Q而且它保护了pȝQ避免了有意或无意带来危险的代码。例如,模板的编写者不可能~写出导致无限@环的代码Q或侵占大量内存的代码。不要轻估这些安全机制的价|大多数模板编写者不懂得~程Q从长远来看Q避免他们接触复杂的~程环境相当于节省了你自q旉?许多模板引擎的用L信,在采用模板引擎的Ҏ中,控制器部分和视图部分的明分,再加上模板引擎固有的安全机制Q得模板引擎以成为其他内容发布系l(比如JSPQ的替代Ҏ。因此,Java模板引擎最常见的用途是替代JSP也就不为奇了?<BR><BR>3.HTML处理 <BR><BR>׃ZL看重模板引擎用来替换JSP的作用,有时他们会忘记模板还有更q泛的用途。到目前为止Q模板引擎最常见的用途是处理HTML Web内容。但我还用模板引擎生成过SQL、email、XML甚至Java源代码?/DIV><img src ="http://www.tkk7.com/wangyugod/aggbug/22057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wangyugod/" target="_blank">船夫</a> 2005-12-01 08:36 <a href="http://www.tkk7.com/wangyugod/archive/2005/12/01/22057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IBATIS SQLMap详解http://www.tkk7.com/wangyugod/archive/2005/11/09/19034.html船夫船夫Wed, 09 Nov 2005 11:17:00 GMThttp://www.tkk7.com/wangyugod/archive/2005/11/09/19034.htmlhttp://www.tkk7.com/wangyugod/comments/19034.htmlhttp://www.tkk7.com/wangyugod/archive/2005/11/09/19034.html#Feedback0http://www.tkk7.com/wangyugod/comments/commentRss/19034.htmlhttp://www.tkk7.com/wangyugod/services/trackbacks/19034.html阅读全文

船夫 2005-11-09 19:17 发表评论
]]>
[数据库]JDBCq接数据库经验技巧集萃(转蝲自Blog For EveryoneQ?/title><link>http://www.tkk7.com/wangyugod/archive/2005/11/08/18713.html</link><dc:creator>船夫</dc:creator><author>船夫</author><pubDate>Tue, 08 Nov 2005 03:46:00 GMT</pubDate><guid>http://www.tkk7.com/wangyugod/archive/2005/11/08/18713.html</guid><wfw:comment>http://www.tkk7.com/wangyugod/comments/18713.html</wfw:comment><comments>http://www.tkk7.com/wangyugod/archive/2005/11/08/18713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wangyugod/comments/commentRss/18713.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wangyugod/services/trackbacks/18713.html</trackback:ping><description><![CDATA[Java数据库连接(JDBCQ由一l用 Java ~程语言~写的类和接口组成。JDBC 为工?数据库开发h员提供了一个标准的 APIQ他们能够用纯Java API 来编写数据库应用E序。然而各个开发商的接口ƈ不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的q接方式?BR><BR>  <B>一、连接各U数据库方式速查?/B><BR><BR>  下面|列了各U数据库使用JDBCq接的方式,可以作ؓ一个手册用?<BR><BR>  1、Oracle8/8i/9i数据库(thin模式Q?<BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <BR>String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID <BR>String user="test"; <BR>String password="test"; <BR>Connection conn= DriverManager.getConnection(url,user,password); </TD></TR></TBODY></TABLE><BR>  2、DB2数据?<BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); <BR>String url="jdbc:db2://localhost:5000/sample"; //sampleZ的数据库?<BR>String user="admin"; <BR>String password=""; <BR>Connection conn= DriverManager.getConnection(url,user,password); </TD></TR></TBODY></TABLE><BR>  3、Sql Server7.0/2000数据?<BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); <BR>String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; <BR>//mydb为数据库 <BR>String user="sa"; <BR>String password=""; <BR>Connection conn= DriverManager.getConnection(url,user,password); </TD></TR></TBODY></TABLE><BR>  4、Sybase数据?<BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>Class.forName("com.sybase.jdbc.SybDriver").newInstance(); <BR>String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDBZ的数据库?<BR>Properties sysProps = System.getProperties(); <BR>SysProps.put("user","userid"); <BR>SysProps.put("password","user_password"); <BR>Connection conn= DriverManager.getConnection(url, SysProps); </TD></TR></TBODY></TABLE><BR>  5、Informix数据?<BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>Class.forName("com.informix.jdbc.IfxDriver").newInstance(); <BR>String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; <BR>user=testuser;password=testpassword"; //myDB为数据库?<BR>Connection conn= DriverManager.getConnection(url); </TD></TR></TBODY></TABLE><BR>  6、MySQL数据?<BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>Class.forName("org.gjt.mm.mysql.Driver").newInstance(); <BR>String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" <BR>//myDB为数据库?<BR>Connection conn= DriverManager.getConnection(url); </TD></TR></TBODY></TABLE><BR>  7、PostgreSQL数据?<BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>Class.forName("org.postgresql.Driver").newInstance(); <BR>String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库?<BR>String user="myuser"; <BR>String password="mypassword"; <BR>Connection conn= DriverManager.getConnection(url,user,password); </TD></TR></TBODY></TABLE><BR>  8、access数据库直q用ODBC?BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;<BR>String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");<BR>Connection conn = DriverManager.getConnection(url,"","");<BR>Statement stmtNew=conn.createStatement() ;</TD></TR></TBODY></TABLE><BR>  <B>二、JDBCq接MySql方式</B><BR><BR>  下面是用JDBCq接MySql的一个小的教E?<BR><BR>  1、查N动程?BR><BR>  MySQL目前提供的java驱动E序为Connection/JQ可以从MySQL官方|站下蝲Qƈ扑ֈmysql-connector-java-3.0.15-ga-bin.jar文gQ此驱动E序为纯java驱动E序Q不需做其他配|?BR><BR>  2、动态指定classpath<BR><BR>  如果需要执行时动态指定classpathQ就在执行时采用Qcp方式。否则将上面?jar文g加入到classpath环境变量中?BR><BR>  3、加载驱动程?BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>try{<BR> Class.forName(com.mysql.jdbc.Driver);<BR> System.out.println(Success loading Mysql Driver!);<BR>}catch(Exception e)<BR>{<BR> System.out.println(Error loading Mysql Driver!);<BR> e.printStackTrace();<BR>}</TD></TR></TBODY></TABLE><BR>  4、设|连接的url<BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>jdbcQmysqlQ?/localhost/databasename[?pa=va][Qpa=va]</TD></TR></TBODY></TABLE><BR><span id="bnx7fzh" class=f14>  <B>三、以下列Z在用JDBC来连接Oracle数据库时可以使用的一些技?/B><BR><BR>  1、在客户端Y件开发中使用Thin驱动E序<BR><BR>  在开发Java软g斚wQOracle的数据库提供了四U类型的驱动E序Q二U用于应用Y件、applets、servlets{客L软gQ另外二U用于数据库中的Java存储q程{服务器端Y件。在客户机端软g的开发中Q我们可以选择OCI驱动E序或Thin驱动E序。OCI驱动E序利用Java本地化接口(JNIQ,通过Oracle客户端Y件与数据库进行通讯。Thin驱动E序是纯Java驱动E序Q它直接与数据库q行通讯。ؓ了获得最高的性能QOracle在客L软g的开发中使用OCI驱动E序Q这g是正的。但我徏议用Thin驱动E序Q因为通过多次试发现Q在通常情况下,Thin驱动E序的性能都超q了OCI驱动E序?BR><BR>  2、关闭自动提交功能,提高pȝ性能<BR><BR>  在第一ơ徏立与数据库的q接Ӟ在缺省情况下Q连接是在自动提交模式下的。ؓ了获得更好的性能Q可以通过调用带布值false参数的ConnectioncȝsetAutoCommit()Ҏ关闭自动提交功能Q如下所C:<BR><BR>  conn.setAutoCommit(false);<BR><BR>  值得注意的是Q一旦关闭了自动提交功能Q我们就需要通过调用Connectioncȝcommit()和rollback()Ҏ来h工的方式对事务进行管理?BR><BR>  3、在动态SQL或有旉限制的命令中使用Statement对象<BR><BR>  在执行SQL命oӞ我们有二U选择Q可以用PreparedStatement对象Q也可以使用Statement对象。无论多次C用同一个SQL命oQPreparedStatement都只对它解析和编译一ơ。当使用Statement对象Ӟ每次执行一个SQL命oӞ都会对它q行解析和编译。这可能会你认为,使用PreparedStatement对象比用Statement对象的速度更快。然而,我进行的试表明Q在客户端Y件中Q情况ƈ非如此。因此,在有旉限制的SQL操作中,除非成批地处理SQL命oQ我们应当考虑使用Statement对象?BR><BR>  此外Q用Statement对象也得编写动态SQL命o更加单,因ؓ我们可以字W串q接在一P建立一个有效的SQL命o。因此,我认为,Statement对象可以使动态SQL命o的创建和执行变得更加单?BR><BR>  4、利用helper函数对动态SQL命oq行格式?BR><BR>  在创Z用Statement对象执行的动态SQL命oӞ我们需要处理一些格式化斚w的问题。例如,如果我们惛_Z个将名字O'Reilly插入表中的SQL命oQ则必须使用二个相连的?'”号替换O'Reilly中的?”号。完成这些工作的最好的Ҏ是创Z个完成替换操作的helperҎQ然后在q接字符串心服用公式表达一个SQL命oӞ使用创徏的helperҎ。与此类似的是,我们可以让helperҎ接受一个Date型的|然后让它输出ZOracle的to_date()函数的字W串表达式?BR><BR>  5、利用PreparedStatement对象提高数据库的M效率<BR><BR>  在用PreparedStatement对象执行SQL命oӞ命o被数据库q行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象Ӟ它就会被再解析一ơ,但不会被再次~译。在~冲Z可以发现预编译的命oQƈ且可以重C用。在有大量用L企业U应用Y件中Q经怼重复执行相同的SQL命oQ用PreparedStatement对象带来的编译次数的减少能够提高数据库的M性能。如果不是在客户端创建、预备、执行PreparedStatementd需要的旉长于StatementdQ我会徏议在除动态SQL命o之外的所有情况下使用PreparedStatement对象?BR><BR>  6、在成批处理重复的插入或更新操作中用PreparedStatement对象<BR><BR>  如果成批地处理插入和更新操作Q就能够显著地减它们所需要的旉。Oracle提供的Statement?CallableStatementq不真正地支持批处理Q只有PreparedStatement对象才真正地支持批处理。我们可以用addBatch()和executeBatch()Ҏ选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()Ҏ和标准的executeUpdate()Ҏ选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制Q可以以如下所C的方式调用setExecuteBatch()Q?BR><BR> <TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1> <TBODY> <TR> <TD>PreparedStatement pstmt3D null;<BR>try {<BR> ((OraclePreparedStatement)pstmt).setExecuteBatch(30);<BR> ...<BR> pstmt.executeUpdate();<BR>} </TD></TR></TBODY></TABLE><BR>  调用setExecuteBatch()时指定的值是一个上限,当达到该值时Q就会自动地引发SQL命o执行Q标准的executeUpdate()Ҏ׃被作为批处理送到数据库中。我们可以通过调用PreparedStatementcȝsendBatch()Ҏ随时传输批处理Q务?BR><BR>  7、用Oracle locatorҎ插入、更新大对象QLOBQ?BR><BR>  Oracle的PreparedStatementcM完全支持BLOB和CLOB{大对象的处理,其是Thin驱动E序不支持利用PreparedStatement对象的setObject()和setBinaryStream()Ҏ讄BLOB的|也不支持利用setCharacterStream()Ҏ讄CLOB的倹{只有locator本n中的Ҏ才能够从数据库中获取LOBcd的倹{可以用PreparedStatement对象插入或更新LOBQ但需要用locator才能获取LOB的倹{由于存在这二个问题Q因此,我徏议用locator的方法来插入、更新或获取LOB的倹{?BR><BR>  8、用SQL92语法调用存储q程<BR><BR>  在调用存储过E时Q我们可以用SQL92或Oracle PL/SQLQ由于用Oracle PL/SQLq没有什么实际的好处Q而且会给以后l护你的应用E序的开发h员带来麻烦,因此Q我在调用存储过E时使用SQL92?BR><BR>  9、用Object SQL对象模式{Ud数据库中<BR><BR>  既然可以Oracle的数据库作ؓ一U面向对象的数据库来使用Q就可以考虑应用程序中的面向对象模式{到数据库中。目前的Ҏ是创建Java bean作ؓ伪装的数据库对象Q将它们的属性映到关系表中Q然后在q些bean中添加方法。尽这样作在Java中没有什么问题,但由于操作都是在数据库之外进行的Q因此其他访问数据库的应用Y件无法利用对象模式。如果利用Oracle的面向对象的技术,可以通过创徏一个新的数据库对象cd在数据库中模仿其数据和操作,然后使用JPublisher{工L成自qJava beancR如果用这U方式,不但Java应用E序可以使用应用软g的对象模式,其他需要共享你的应用中的数据和操作的应用Y件也可以使用应用软g中的对象模式?BR><BR>  10、利用SQL完成数据库内的操?BR><BR>  我要向大家介l的最重要的经验是充分利用SQL的面向集合的Ҏ来解x据库处理需求,而不是用Java{过E化的编E语a?BR><BR>  如果~程人员要在一个表中查找许多行Q结果中的每个行都会查找其他表中的数据,最后,~程人员创徏了独立的UPDATE命o来成批地更新W一个表中的数据。与此类似的d可以通过在set子句中用多列子查询而在一个UPDATE命o中完成。当能够在单一的SQL命o中完成Q务,何必要让数据在网上流来流ȝQ我用户认真学习如何最大限度地发挥SQL的功能?/SPAN><img src ="http://www.tkk7.com/wangyugod/aggbug/18713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wangyugod/" target="_blank">船夫</a> 2005-11-08 11:46 <a href="http://www.tkk7.com/wangyugod/archive/2005/11/08/18713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://27simnjingmiguan.com" target="_blank">69˾ƷƵ</a>| <a href="http://789xxoo.com" target="_blank">þþþƷƵ</a>| <a href="http://zjpcyh.com" target="_blank">99ƷѾþþþþ</a>| <a href="http://littlevv.com" target="_blank">ۺϳ91Ʒ</a>| <a href="http://wuhhz.com" target="_blank">йڶѲ</a>| <a href="http://pjwys.com" target="_blank">99ȳ˾ƷȾþ</a>| <a href="http://zgdhuibao.com" target="_blank">2019Ļ</a>| <a href="http://youkabaitiao.com" target="_blank">ٶ˽ȫֱ</a>| <a href="http://abbobo.com" target="_blank">һѹۿ</a>| <a href="http://moushengguigz.com" target="_blank">޾aaվ</a>| <a href="http://pohezi.com" target="_blank">Ȱ׽һ</a>| <a href="http://mcsser.com" target="_blank">ҾƷѾþþþӰԺ </a>| <a href="http://wuaiav.com" target="_blank">޹պһ</a>| <a href="http://q2c6.com" target="_blank">˸߹ۿƵ</a>| <a href="http://lanoss.com" target="_blank">ҹƷ</a>| <a href="http://6h6y.com" target="_blank">˳ɫ4444߹ۿ</a>| <a href="http://by8847.com" target="_blank">ձػaѴƬ</a>| <a href="http://by8847.com" target="_blank">޹Ʒһߵ</a>| <a href="http://102sds.com" target="_blank">AëƬ߲</a>| <a href="http://ju7776.com" target="_blank">avҹƷר</a>| <a href="http://apguangyu.com" target="_blank">վѹۿ</a>| <a href="http://se969.com" target="_blank">ĻһƵ</a>| <a href="http://2023852.com" target="_blank">ձ߹ۿ</a>| <a href="http://lswqn.com" target="_blank">þþƷվ</a>| <a href="http://shaiyahx.com" target="_blank">޹av</a>| <a href="http://0149545.com" target="_blank">岻</a>| <a href="http://www-533999.com" target="_blank">޾ƷƵ</a>| <a href="http://saohu533.com" target="_blank">޾Ʒ</a>| <a href="http://milbolg.com" target="_blank">Ʒרţţ</a>| <a href="http://445848.com" target="_blank">޾Ʒ޿</a>| <a href="http://tbw77.com" target="_blank">½һëƬƵۿi</a>| <a href="http://4438xx21.com" target="_blank">޾ƷƵ</a>| <a href="http://hssw1688.com" target="_blank">ˮƵ߹ۿѲŸ </a>| <a href="http://666mou.com" target="_blank">йavƬ</a>| <a href="http://jgxsdst.com" target="_blank">޹avһؼ</a>| <a href="http://hysw100.com" target="_blank">aƵapp</a>| <a href="http://ydstbj.com" target="_blank">³˿Ƭһ</a>| <a href="http://quxx10.com" target="_blank">޹Ʒ18þþþþ</a>| <a href="http://0102008.com" target="_blank">˽Ƶ75</a>| <a href="http://5656ys.com" target="_blank">ƷĻѹۿҹ</a>| <a href="http://180xiu.com" target="_blank">þþþþ޾ƷӰԺ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>