﻿<?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-insomnia,politic,proficient ,sensible.-随笔分类-数据库方面</title><link>http://www.blogjava.net/youngturk/category/18730.html</link><description>The world is a fine place , and worth fighting for it.</description><language>zh-cn</language><lastBuildDate>Sat, 04 May 2013 08:55:00 GMT</lastBuildDate><pubDate>Sat, 04 May 2013 08:55:00 GMT</pubDate><ttl>60</ttl><item><title>web页面检索数据库中的字段是乱码问题</title><link>http://www.blogjava.net/youngturk/archive/2013/05/03/398720.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Fri, 03 May 2013 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2013/05/03/398720.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/398720.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2013/05/03/398720.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/398720.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/398720.html</trackback:ping><description><![CDATA[this.databaseEncoding = "GBK";<br />//&nbsp;&nbsp;this.databaseEncoding = "ISO8859-1";<br />&nbsp;&nbsp;this.platformEncoding = "GBK";<br /><br />获得数据库字符时候需要转换<img src ="http://www.blogjava.net/youngturk/aggbug/398720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2013-05-03 10:33 <a href="http://www.blogjava.net/youngturk/archive/2013/05/03/398720.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主键的设置方式可以是这样,有待学习啊</title><link>http://www.blogjava.net/youngturk/archive/2013/01/08/393938.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Tue, 08 Jan 2013 02:24:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2013/01/08/393938.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/393938.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2013/01/08/393938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/393938.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/393938.html</trackback:ping><description><![CDATA[<!--StartFragment -->
 
 
<div><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/youngturk/zhujian.jpg" width="679" longdesc="" height="90" /><br />&nbsp;<br /><br /><!--StartFragment -->


<div><img alt="" src="file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/Tencent/Users/2664282194/QQ/WinTemp/RichOle/E162BX%7BL~O2NY$_FEJ@V8LA.jpg" /> </div></div><img src ="http://www.blogjava.net/youngturk/aggbug/393938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2013-01-08 10:24 <a href="http://www.blogjava.net/youngturk/archive/2013/01/08/393938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在本数据库中创建DBlink解决同一网段不同数据库间访问</title><link>http://www.blogjava.net/youngturk/archive/2013/01/08/393935.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Tue, 08 Jan 2013 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2013/01/08/393935.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/393935.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2013/01/08/393935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/393935.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/393935.html</trackback:ping><description><![CDATA[<div>例如:<br />&lt;!-- 从jdbc:oracle:thin:@10.128.5.65:1521:tjgwl1 中跳到(服务器间跳转)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.128.141.109:1521:tjgwlw数据库后面直接加@tjgwlw--&gt; <br /></div> <img src ="http://www.blogjava.net/youngturk/aggbug/393935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2013-01-08 10:04 <a href="http://www.blogjava.net/youngturk/archive/2013/01/08/393935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle新表的建立(理解表空间含义)</title><link>http://www.blogjava.net/youngturk/archive/2012/11/30/392275.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Fri, 30 Nov 2012 05:43:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/11/30/392275.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/392275.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/11/30/392275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/392275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/392275.html</trackback:ping><description><![CDATA[在oracle数据库已经创建完的情况下,想要创建新的表,可以先创建新用户,和新的表空间<br />然后分配给用户表空间权限即可,不需要创建新的数据库,在本机上..<img src ="http://www.blogjava.net/youngturk/aggbug/392275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-11-30 13:43 <a href="http://www.blogjava.net/youngturk/archive/2012/11/30/392275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring中的 继承HibernateDaosupport方法</title><link>http://www.blogjava.net/youngturk/archive/2012/11/22/391725.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Thu, 22 Nov 2012 00:59:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/11/22/391725.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/391725.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/11/22/391725.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/391725.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/391725.html</trackback:ping><description><![CDATA[<div>上述的getHibernateTemplate方法中的update方法跟数据库设置主键有关,能根据主键更新..个人理解</div><img src ="http://www.blogjava.net/youngturk/aggbug/391725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-11-22 08:59 <a href="http://www.blogjava.net/youngturk/archive/2012/11/22/391725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE编程，存储过程，自学笔记（备份）转</title><link>http://www.blogjava.net/youngturk/archive/2012/11/15/391366.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Thu, 15 Nov 2012 03:28:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/11/15/391366.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/391366.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/11/15/391366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/391366.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/391366.html</trackback:ping><description><![CDATA[<p>--创建过程名称<br />--create procedure 存储过程名字 is begin<br />--create or replace procedure&nbsp; 如果有就替换掉<br />----------------------------------------------<br />案例1：<br />--创建一个表<br />create table mytest(name varchar2(30),passwd varchar2(30));<br />--创建过程<br />create procedure sq_pro1 is<br />begin<br />--执行部分<br />insert into mytest values('zgx','888666');<br />end；</p>
<p>-- / 斜线回车</p>
<p><br />----------------------------------------------<br />如何查看错误信息：<br />show error&nbsp; 回车</p>
<p>--调用存储过程<br />1.exec 过程名(参数1，2....);<br />2.call 过程名(参数1，2....);<br />---------------------------------------------------<br />set serveroutput on;打开输出选项<br />set serveroutput off;关闭输出选项<br />dbms_&nbsp; 是包名的意思！<br />案例2：<br />dbms_output.put_line('helloWorld');&nbsp; <br />-----------------<br />declare<br />&nbsp;v_ename varchar2(5);--定义字符串变量<br />begin<br />&nbsp;--into v_ename意思:把查询出来数据 赋值给 v_ename;&amp;no是执行的时候会弹出输入框<br />&nbsp;select ename into v_ename from emp where empno=&amp;no;<br />&nbsp;--||代表 连接符号；<br />&nbsp;dbms_output.put_line('用户名是：'||v_ename); <br />end;<br />-----------<br />案例3：<br />declare<br />&nbsp;v_ename varchar2(5);--定义字符串变量<br />&nbsp;v_sal number(7,2);--定义字符串变量<br />begin<br />&nbsp;--如果是多个字段，用逗号隔开，顺序必须一样！！<br />&nbsp;select ename,sal into v_ename,v_sal from emp where empno=&amp;no;<br />&nbsp;--||代表 连接符号；<br />&nbsp;dbms_output.put_line('用户名是：'||v_ename||'工资：'||v_sal); <br />end;<br />---------------------<br />--异常的捕获<br />exception<br />when no_data_found then --如果出现no_data_found异常就执行下一句<br />dbms_output.put_line('输入有误！');<br />end;<br />------------<br />过程：<br />案例4：<br />创建带输入参数的过程；<br />create procedure sp_pro3(spNma varchar2,newSal number) is<br />begin<br />&nbsp;update emp set sal=newSal where ename=spName;<br />end;<br />------------<br />函数：<br />函数用于返回特定的数据，当建立函数时，在函数头部要求有return语句；<br />案例5：<br />--输入雇员姓名，返回该雇员的年薪<br />--返回一个number类型；返回值名字是yearSal，类型是number(7,2);<br />create function sp_fun1(spName varchar2) return number is yearSal number(7,2);<br />begin<br />--执行部分<br />select sal*12+nvl(comm,0)*12 into yearSal from emp where enamee=spName;<br />return yearSal;<br />end;<br />调用函数中<br />--随便定义一个值<br />var abc number;<br />--掉用函数把结果赋值给 abc<br />call sp_fun1()'SCOTT' into:abc;<br />-------------<br />包<br />创建包：<br />--创建了一个包 sp_package<br />--声明该包里有一个过程update_sal<br />--生命该包里有一个函数annual_income<br />create package sp_package is<br />&nbsp;procedure update_sal(name,varchar2,newsal number);<br />&nbsp;function annual_income(name varchar2, return number;<br />end;<br />给包sp_package 实现包体--把定义包中的 过程和函数实现；<br />create package body sp_package is<br />procedure update_sal(name,varchar2,newsal number) is<br />begin<br />&nbsp;update emp set sal=newsal where ename=name;<br />end;<br />function annual_income(name varchar2)<br />return number isannual_salary number;<br />begin<br />select sal*12+nvl(comm,0) into annual_salary from emp where ename=name;<br />return annual_salary;<br />end;<br />end;<br />--------------<br />调用包中的过程或函数<br />exec sp_package.update_sal('SCOTT','120');<br />---------------------<br />触发器<br />触发器是指隐含的执行的存储过程。当定义触发器时，必须要指定触发的时间和触发的操作，常用触发包括insert，pudate，delete语句，而触发操作实际就是一个pl/sql块。可以使用create trigger来建立触发器。<br />触发器是非常有用的，可维护数据库的安全和一致性。<br />---------<br />定义并使用变量<br />包括：<br />1.标量类型（scalar）<br />2.符合类型（）</p>
<p>---------<br />标量（scalar）-常用类型<br />语法：<br />identifier [constant] datatype [not null] [:=| default expr]<br />identifier:名称<br />constant：指定常量。需要指定它的初始值，且其值是不能改变的<br />datatype：数据类型<br />not null： 指定变量值不能为null<br />：= 给变量或是常量指定初始值<br />default 用于指定初始值<br />expr：指定初始值的pl/sql表达式，文本值、其他变量、函数等<br />------------<br />标量定义的案例<br />1.定义一个变长字符串<br />v_ename varchar2(10)<br />2.定义一个小数 范围 -9999.99~9999.99<br />v_sal number(6,2)<br />3.定义一个小数并给一个初始值为5.4 :=pl/sql的赋值号<br />v_sal2 number(6,2):=5.4<br />4.定义一个日期类型的数据<br />v_hiredate date;<br />5.定义一个布尔变量，不能为空，初始值为false<br />v_valid boolean not null default false;<br />---------------<br />如何使用标量<br />&nbsp;&nbsp; 定义好变量后，就可以使用这些变量。这里需要说明的是pl/sql块为变量赋值不同于其他的编程语言，需要在等号前面加冒号(:=)</p>
<p>下面以输入员工号，显示雇员名称、工资、个人所得税(税率为0.03为例)。说明变量的使用，看看如何编写：</p>
<p>declare<br />c_tax_rate number(3.2):=0.03; --定义赋值<br />--用户名<br />v_ename varchar2(5);<br />v_sal number(7,2);<br />v_tax_sal number()7,2;<br />begin<br />--执行<br />select ename,sal into v_ename,v_sal from emp where empno=$no;<br />--计算所得税<br />v_tax_sal:=v_sal*c_tax_rate;<br />--输出<br />dbms_output.put_line('姓名是:'||v_ename||'工资：'||v_sal||'所得税：'||v_tax_sal);<br />end;<br />-----<br />标量（scalar）--使用%type类型<br />&nbsp;对于上面的pl/sql块有一个问题：<br />&nbsp;就是如果员工的姓名超过了5字符的话，就会有错误，为了降低pl/sql程序的维护工作量，可以使用%type属性定义变量，这样他会按照数据库列来确定你定义的变量的类型和长度。<br />看看怎么使用。<br />语法： 标识符名 表名.列名%type;</p>
<p>&nbsp;declare<br />&nbsp; v_ename emp.ename%type; --定义变量v_ename 和emp表中列名ename大小类型保持一致；<br />---<br />复合变量（composite）<br />用于存放多个值的变量。<br />包括：<br />1.pl/sql记录<br />2.pl/sql表<br />---------------<br />复合类型-pl/sql记录<br />&nbsp; 类似与高级语言的结构体，需要注意的是，当引用pl/sql记录成员时，必须要加记录变量作为前缀（记录变量.记录成员）<br />如下：<br />declare<br />--定义一个pl/sql记录类型是：emp_record_type，类型包括三个数据name，salary，title；该类型中可以存放三个类型的数据；<br />type emp_record_type is record(name emp.ename%type,salary emp.sal%type,title&nbsp; emp.job%type);</p>
<p>--定义了一个sp_record变量，类型是emp_record_type<br />sp_record emp_record_type;</p>
<p>begin<br />select ename,sal,job into sp_record from emp where empno=7788;<br />dbms_output.put_line('员工名：'||sp_record.name); --显示定义emp_record_type类型中 name的值；<br />end;<br />end;<br />----------------<br />复合类型--pl/sql表<br />&nbsp;相当于高级语言中的数组。但是需要注意的是在高级语言中数组的下标不能为负数，而pl/sql是可以为负数的，并且表元素的下标没有限制。实例如下：<br />declare<br />--定义了一个pl/sql表类型sp_table_type，该类型是用于存放emp.ename%type类型的数组<br />--index by binary_integer标识下标是整数<br />type sp_table_type is table of emp.ename%type index by binary_integer;<br />--定义了一个sp_table变量，变量类型是sp_table_type<br />sp_table sp_table_type;<br />begin<br />--把查询出来的ename放到 table（0）下标为0的数据<br />select ename into sp_table(0) from emp where empno=7788;<br />dbms_output.put_lin('员工名：'||sp_table(0)); --要和存放下标一样<br />end;<br />说明：<br />sp_table_type&nbsp; 是pl/sql表类型<br />emp.ename%type 指定了表的元素的类型和长度<br />sp_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为pl/sql表变量<br />sp_table(0)&nbsp;&nbsp;&nbsp; 表示下标为0的<br />---------------<br />参照变量<br />参照变量是指用于存放数值指针的变量。通过使用参照变量，可以使用得应用程序共享相同对象，从而降低占用的空间。在编写pl/sql程序时，可以使用游标变量和对象类型变量两种参照变量类型<br />游标变量用的最多<br />-----------<br />参照变量---游标变量<br />使用游标时，当定义游标时不需要指定相应的select语句，但是当使用游标时需要指定select语句，这样一个游标就与一个select语句结合了。<br />如下<br />1.请使用pl/sql编写一个块，可以输入部门号，并显示该部门所有员工姓名和他的工资。<br />declare<br />&nbsp;--定义游标类型<br />&nbsp;type sp_emp_cursor is ref cursor；<br />&nbsp;--定义一个游标变量<br />&nbsp;test_cursor sp_emp_cursor；<br />&nbsp;--定义变量<br />&nbsp;v_ename emp。ename%type；<br />&nbsp;v_sal emp。sal%type；<br />begin<br />--执行<br />--打开一个游标test_cursor和一个select结合<br />open test_cursor for select ename,sal from emp where deptno=&amp;no;<br />--循环取出<br />loop<br />&nbsp;--fetch就是取出。取出test_cursor中的数据放到 v_ename,v_sal里面去；<br />&nbsp;fetch test_cursor into v_ename,v_sal；<br />&nbsp;--判断是否test_cursor为空<br />&nbsp;exit when test_cursor%notfound；<br />&nbsp;dbms_output.put_line('名字：'||v_ename||'工资：'||v_sal);<br />end loop；<br />end；</p>
<p><br />2.在1。基础上，如果某个员工的工资低于200元，就增加100元。<br />declare<br />&nbsp;--定义游标类型<br />&nbsp;type sp_emp_cursor is ref cursor；<br />&nbsp;--定义一个游标变量<br />&nbsp;test_cursor sp_emp_cursor；<br />&nbsp;--定义变量<br />&nbsp;v_ename emp。ename%type；<br />&nbsp;v_sal emp。sal%type；<br />begin<br />--执行<br />--打开一个游标test_cursor和一个select结合<br />open test_cursor for select ename,sal from emp where deptno=&amp;no;</p>
<p>--循环取出<br />loop<br />&nbsp;--fetch就是取出。取出test_cursor中的数据放到 v_ename,v_sal里面去；<br />&nbsp;fetch test_cursor into v_ename,v_sal；<br />&nbsp;if v_sal&lt;200 then <br />&nbsp;update emp set sal=sal+100 where ename=v_ename;<br />&nbsp;end if;<br />&nbsp;--判断是否test_cursor为空<br />&nbsp;exit when test_cursor%notfound；<br />&nbsp;dbms_output.put_line('名字：'||v_ename||'工资：'||v_sal);<br />end loop；<br />end；</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>----------<br />条件分支语句<br />if--then，<br />if--then--else，<br />if--then--elsif--else</p>
<p>----<br />循环语句<br />loop --end loop；至少会执行一次。<br />create or replace procedure sp_pro6() is<br />--定义赋值<br />v_num number:=1;<br />begin<br />loop<br />&nbsp;insert into users1 values(v_num,spName);<br />&nbsp;--判断是否要退出循环<br />&nbsp;exit when v_num=10;<br />&nbsp;--自增<br />&nbsp;v_num:=v_num+1;<br />end loop;<br />end;</p>
<p><br />-------------<br />循环语句-while先判断后执行<br />create or replace procedure sp_pro6() is<br />--定义赋值<br />v_num number:=11;<br />begin<br />while v_num&lt;=20 loop<br />&nbsp;insert into users1 values(v_num,spName);<br />&nbsp;v_num:=v_num+1;<br />end loop;<br />end;<br />------------------<br />循环语句--for循环（不建议）<br />begin<br />&nbsp;for i in reverse 1。。10 loop<br />&nbsp;insert into users1 values（i，'aaa'）；<br />&nbsp;end loop;<br />end；<br />-------<br />循环语句--goto,null循环（不建议）<br />declare <br />&nbsp;i int:=1;<br />begin<br />&nbsp;loop<br />&nbsp;dbms_output.put_line('输出i='||i);<br />&nbsp;if i=10 then<br />&nbsp;goto end_loop;<br />&nbsp;end if;<br />&nbsp;i:=i+1;<br />&nbsp;end loop;<br />&nbsp;&lt;&lt;end_loop&gt;&gt;&nbsp; --到i到10后直接跳到该标记<br />dbms_output.put_line('循环结束');<br />end;<br />---------------------------<br />无返回值的存储过程（有输入参数）<br />&nbsp;<br />create table book(<br />&nbsp;bookId number;<br />&nbsp;bookName varchar2(100);<br />&nbsp;publishHouse varchar2(50);<br />);<br />--编写过程<br />--in表示这是一个输入参数，不写默认是in<br />--out 表示一个输出参数<br />create or replace procedure sp_pro7(spBookId in number，spbookName in varchar2,sppublishHouse in varchar2) is<br />begin<br />&nbsp;insert into book values(spBookId,spbookName,sppublishHouse);<br />end;</p>
<p>---------------<br />有返回值的存储过程（有输入和输出参数）</p>
<p>create or replace procedure sp_pro8(ename in number，spName out varchar2) is<br />begin<br />&nbsp;--spName自动返回 因为他是out<br />&nbsp;select ename into spName from emp where empno=spno;<br />end;<br />----------------<br />有返回值是集合数组的存储过程（有输入和输出参数）<br />1.建立一个包<br />--创建包 里面定义一个游标类型；<br />create or replace package testpackage as<br />type test_cursor is ref cursor;<br />end testpackage；<br />2.建立存储过程。<br />create or replace procedure sp_pro8(spNo in number，p_cursor out testpackage.test_cursor) is<br />begin<br />&nbsp;--spName自动返回 因为他是out<br />&nbsp;open p_cursor for select * from emp where deptno=spNo;<br />end;</p>
<p>－－－－－－－－－－－－<br />oracle的分页&nbsp; rn是别名<br />select t1.*，rownum rn from(select * from emp) t1;//多加一个列记录个数<br />select t1.*，rownum rn from(select * from emp) t1 where rownum&lt;10; <br />select * from (select t1.*，rownum rn from(select * from emp) t1 where rownum&lt;10) where rn&gt;=6;</p>
<p>编写oracle的分页 <br />--建立一个包<br />create or replace package testpackage as<br />type test_cursor is ref cursor;<br />end testpackage；<br />--建立存储过程<br />create or replace procedure fenye<br />(tableName in varchar2,<br />pageSize in number, --一页显示几条记录<br />pageNow in number,&nbsp; --显示哪一页<br />myrows out number, --总记录数<br />myPageCount out number,--总页数<br />p_cursor out testpackage.test_cursor --返回的记录集<br />) is<br />--定义部分<br />--定义sql语句 字符串<br />v_sql varchar2(1000);<br />--定义两个整数<br />v_begin number:=(pageNow-1)*pageSize+1;<br />v_end number:=pageNow*pageSize;<br />begin<br />--执行部分<br />v_sql:='select * from (select t1.*，rownum rn from(select * from '||tableName||') t1 where rownum&lt;10'||?||') where rn&gt;='||?||';';<br />--把游标和sql语句关联起来<br />open p_cursor for v_sql;</p>
<p>--计算myrows<br />v_sql:='select count(*) from '||tableName||'';<br />--执行sql，并把返回值，赋值给myrows;<br />execute immediate v_sql int myrows;<br />--计算myPagecount<br />if mod(myrows,pageSize)=0 then --mod()取余数<br />myPageCount:=myrows/pageSize;<br />else<br />myPageCount:=myrows/pagesize+1;<br />end if;</p>
<p>--关闭游标<br />--close p_cursor;<br />end;</p>
<p><br />------------------------<br />例外的分类<br />1.预定义例外用于处理常见的oracle错误<br />2.非预定义例外用于处理预定义例外不能处理的例外&nbsp; 6.53<br />3.自定义例外用于处理与oracle错误无关的其他情况</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br />------------------------------------------------<br />-----------------------------------------------<br />-------ＪＡＶＡ中-调用无返回值的存储过程-----------------<br />try{<br />&nbsp;Class.forName();<br />&nbsp;Connection ct=DriverManager.getConnerction();<br />&nbsp;//调用无返回值存储过程<br />&nbsp;CallableStatement cs=ct.prepareCall("{call 存储过程名称(?,?,?)}") // ?代表存储过程参数<br />&nbsp;cs.setIn(1,10);<br />&nbsp;cs.setString(2,'java调用存储过程');<br />&nbsp;cs.setString(3,'人民出版社');<br />&nbsp;//执行<br />&nbsp;cs.execute();<br />&nbsp;<br />}catch(Exception e)<br />{<br />&nbsp;e.printStackTrace();<br />}finally{<br />&nbsp;cs.close();<br />&nbsp;ct.close();<br />}</p>
<p>------------------------------------------------<br />-----------------------------------------------<br />------ＪＡＶＡ中--调用有回值的存储过程-----------------<br />try{<br />&nbsp;Class.forName();<br />&nbsp;Connection ct=DriverManager.getConnerction();<br />&nbsp;//调用有返回值存储过程<br />&nbsp;CallableStatement cs=ct.prepareCall("{call 存储过程名称(?,?)}") // ?代表存储过程参数 第一是输入，第二是输出<br />&nbsp;//第一个?输入参数<br />&nbsp;cs.setIn(1,10);<br />&nbsp;//给第二个？输出值赋值<br />&nbsp;cs.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR); //<br />&nbsp;//执行<br />&nbsp;cs.execute();<br />&nbsp;//取出返回值,<br />&nbsp;String name=cs。getString(2);<br />&nbsp;System.out。println("名称是："+name);<br />}catch(Exception e)<br />{<br />&nbsp;e.printStackTrace();<br />}finally{<br />&nbsp;cs.close();<br />&nbsp;ct.close();<br />}</p>
<p>------------------------------------------------<br />-----------------------------------------------<br />-------ＪＡＶＡ中-调用有回值是多个 数组2011-12-5的存储过程-----------------<br />try{<br />&nbsp;Class.forName();<br />&nbsp;Connection ct=DriverManager.getConnerction();<br />&nbsp;//调用有返回值存储过程<br />&nbsp;CallableStatement cs=ct.prepareCall("{call 存储过程名称(?,?)}") // ?代表存储过程参数 第一是输入，第二是输出<br />&nbsp;//第一个?输入参数<br />&nbsp;cs.setIn(1,10);<br />&nbsp;//给第二个？输出值赋值<br />&nbsp;cs.registerOutParameter(2,oracle.jdbc.OracleTypes.cursor); //类型是cursor游标<br />&nbsp;//执行<br />&nbsp;cs.execute();<br />&nbsp;//取出返回值（结果集）<br />&nbsp;ReaultSet rs=(ResultSet)cs.getObject(2); //2是第二？<br />&nbsp;while(rs.next())<br />&nbsp;{<br />&nbsp; int =rs。getInt(1); <br />&nbsp; String name=rs。getString(2);<br />&nbsp; System.out。println("名称是："+name);<br />&nbsp;<br />&nbsp;}</p>
<p>}catch(Exception e)<br />{<br />&nbsp;e.printStackTrace();<br />}finally{<br />&nbsp;cs.close();<br />&nbsp;ct.close();<br />}<br />------------------------------------------------<br />-----------------------------------------------<br />------ＪＡＶＡ中--调用有回值的存储过程-----------------<br />try{<br />&nbsp;Class.forName();<br />&nbsp;Connection ct=DriverManager.getConnerction();<br />&nbsp;//调用有返回值存储过程<br />&nbsp;CallableStatement cs=ct.prepareCall("{call 存储过程名称(?,?)}") // ?代表存储过程参数 第一是输入，第二是输出<br />&nbsp;//第一个?输入参数<br />&nbsp;cs.setIn(1,10);<br />&nbsp;//给第二个？输出值赋值<br />&nbsp;cs.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR); //<br />&nbsp;//执行<br />&nbsp;cs.execute();<br />&nbsp;//取出返回值,<br />&nbsp;String name=cs。getString(2);<br />&nbsp;System.out。println("名称是："+name);<br />}catch(Exception e)<br />{<br />&nbsp;e.printStackTrace();<br />}finally{<br />&nbsp;cs.close();<br />&nbsp;ct.close();<br />}</p>
<p>------------------------------------------------<br />-----------------------------------------------<br />-------ＪＡＶＡ中-测试分页调用存储过程-----------------<br />try{<br />&nbsp;Class.forName();<br />&nbsp;Connection ct=DriverManager.getConnerction();<br />&nbsp;//调用有返回值存储过程<br />&nbsp;CallableStatement cs=ct.prepareCall("{call 分页存储过程名称(?,?,?,?,?,?)}") // ?代表存储过程参数 第一是输入，第二是输出<br />&nbsp;//?输入参数<br />&nbsp;cs.setString(1,'表名'); //表名<br />&nbsp;cs.setInt(2,5); //一页显示几条记录<br />&nbsp;cs.setInt(3,1); //显示第几页<br />&nbsp;//?输出参数<br />&nbsp;//注册总记录数<br />&nbsp;cs.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);<br />&nbsp;//注册总页数<br />&nbsp;cs.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);<br />&nbsp;//注册返回的结果集<br />&nbsp;cs.registerOutParameter(4,oracle.jdbc.OracleTypes.CURSOR); //类型是cursor游标</p>
<p>&nbsp;<br />&nbsp;//执行<br />&nbsp;cs.execute();<br />&nbsp;//取出总记录数<br />&nbsp;int rowNum=cs.getInt(4);//4表示参数中第四个？<br />&nbsp;//总页数<br />&nbsp;int pageCount=cs.getInt(5);<br />&nbsp;//返回的记录结果<br />&nbsp;ReaultSet rs=(ResultSet)cs.getObject(6);<br />&nbsp;while(rs.next())<br />&nbsp;{<br />&nbsp; int =rs。getInt(1); <br />&nbsp; String name=rs。getString(2);<br />&nbsp; System.out。println("名称是："+name);<br />&nbsp;<br />&nbsp;}</p>
<p>}catch(Exception e)<br />{<br />&nbsp;e.printStackTrace();<br />}finally{<br />&nbsp;cs.close();<br />&nbsp;ct.close();<br />}</p>
<p>A . 嵌套表 </p>
<p>1. 声明数组类型 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create or replace type tab_array is table of varchar2(38);暂时不要在包中声明该类型 </p>
<p>2. 创建存储过程 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 该例子存储过程是在包中创建的,包名 arraydemo <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure testArray(resNumber in tab_array,procResult out tab_array) is <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procResult := new tab_array(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i in 1..resNumber.Count loop <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procResult.EXTEND; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procResult(i) := resNumber(i) || 'lucifer' || i; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end loop; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; </p>
<p>3. Java调用代码 <br />&nbsp;&nbsp;&nbsp; //必须使用Oracle的连接和Statement,使用了连接池的必须通过一些方法获取原始的连接 <br />&nbsp;&nbsp;&nbsp; OracleConnection conn = null; <br />&nbsp;&nbsp;&nbsp; OracleCallableStatement stmt = null; <br />&nbsp;&nbsp;&nbsp; String[] param = { "1001", "1002", "1006" }; <br />&nbsp;&nbsp;&nbsp; stmt =(转换类型) conn.prepareCall("{call arraydemo.testArray(?,?)}"); <br />&nbsp;&nbsp;&nbsp; // 类型名必须大写 <br />&nbsp;&nbsp;&nbsp; ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("TAB_ARRAY", conn); <br />&nbsp;&nbsp;&nbsp; stmt.setARRAY(1, new ARRAY(descriptor,conn,param)); <br />&nbsp;&nbsp;&nbsp; stmt.registerOutParameter(2, OracleTypes.ARRAY, "TAB_ARRAY"); <br />&nbsp;&nbsp;&nbsp; stmt.execute(); <br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; ARRAY array = stmt.getARRAY(2); <br />&nbsp;&nbsp;&nbsp; Datum[] data = array.getOracleArray(); <br />&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; data.length; i++) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(i + " : " + new String(data.shareBytes())); <br />&nbsp;&nbsp;&nbsp; } <br />4 . 注意的问题及尚未解决的问题 <br />&nbsp;&nbsp;&nbsp; 抛出:Non supported character set: oracle-character-set-852 异常---解决:添加 nls_charset12.jar 到classpath,该包在oracle/ora92/jdbc/lib目录下 <br />&nbsp;&nbsp;&nbsp; 待解决问题: <br />&nbsp;&nbsp;&nbsp; a) 如何调用在包声明的自定义类型 <br />&nbsp;&nbsp;&nbsp; b) 比较不同声明类型的优缺点,及使用场合 <br />&nbsp;&nbsp;&nbsp; 嵌套表其它应用:http://zhouwf0726.itpub.net/post/9689/212253 </p>
<p>B . 索引表 <br />C . 内置数组 <br />D . 游标方式</p><img src ="http://www.blogjava.net/youngturk/aggbug/391366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-11-15 11:28 <a href="http://www.blogjava.net/youngturk/archive/2012/11/15/391366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js读取XML文件 JS读写XML文件</title><link>http://www.blogjava.net/youngturk/archive/2012/11/09/391095.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Fri, 09 Nov 2012 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/11/09/391095.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/391095.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/11/09/391095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/391095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/391095.html</trackback:ping><description><![CDATA[<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><strong>JavaScript</strong></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;script type="text/javascript"&gt;<br />&nbsp;&nbsp;&nbsp; //&lt;![CDATA[<br />&nbsp;&nbsp;&nbsp; //嵌入CDATA段可以防止不兼容Javacript的浏览器不产生错误信息<br />&nbsp;&nbsp;&nbsp; //增加正则表达式<span class="Apple-converted-space">&nbsp;</span><br />&nbsp;&nbsp;&nbsp; String.prototype.getQueryString = function(name) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var reg = new RegExp("(^|&amp;|\\?)" + name + "=([^&amp;]*)(&amp;|$)"), r;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (r = this.match(reg)) return unescape(r[2]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />&nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp; var address = location.search.getQueryString("address"); //通过表达式获得传递参数<br />&nbsp;&nbsp;&nbsp; //针对两种浏览器，分别获取xmlDocument对象// 读取XML文件&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; function loadXML(xmlFile) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var xmlDoc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (window.ActiveXObject) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlDoc.async = false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlDoc.load(xmlFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (document.implementation &amp;&amp; document.implementation.createDocument) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlDoc = document.implementation.createDocument("", "", null);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlDoc.async = false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlDoc.load(xmlFile);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert('您的浏览器不支持该系统脚本！');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return xmlDoc;<br />&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><br />&nbsp;&nbsp;&nbsp; //调用地图<br />&nbsp;&nbsp;&nbsp; var map; //全局GMap GOOGLE 地图 API<br />&nbsp;&nbsp;&nbsp; function load() {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (GBrowserIsCompatible()) //检查浏览器兼容性<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map = new GMap2(document.getElementById("map")); //地图加栽到ID为map的DIV中。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map.addControl(new GSmallMapControl());&nbsp;&nbsp; //添加Gcontrol控件//放大缩小的那个<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map.setCenter(new GLatLng(26.577014, 104.877977), 15); //设置地图中心<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //创建多个坐标点（从INFO.XML文件中读取）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var xmlDoc = l<strong>oadXML("Info.xml");<span class="Apple-converted-space">&nbsp;</span></strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var members = xmlDoc.getElementsByTagName("number");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var maxRes = members.length;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt;= maxRes; i++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //XML中记录了多个坐标点，要每个点都标记一下<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var oName = members[i].getElementsByTagName("name");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var oLongitude = members[i].getElementsByTagName("Longitude");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var oLatitude = members[i].getElementsByTagName("Latitude");</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var name = oName[0].firstChild.nodeValue<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var Longitude = oLongitude[0].firstChild.nodeValue<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var Latitude = oLatitude[0].firstChild.nodeValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var marker = new GMarker(new GLatLng(Longitude, Latitude), { title: name });&nbsp;&nbsp;&nbsp;&nbsp; //对每个点添加标记<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; marker.openInfoWindowHtml("&lt;div style=line-height:20px;text-align:center;font-size:12px;'&gt;&lt;a href=Left.aspx?info=" + name + " target=framLeft&gt;" + name + ",点击查看信息&lt;/a&gt;&lt;/div&gt;");<span class="Apple-converted-space">&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map.addOverlay(marker);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; //]]&gt;<br />&lt;/script&gt;</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><strong>XML文件</strong></p><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;?xml version="1.0" encoding="GB2312"?&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;earth&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;number id='1'&gt;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;name&gt;213211212213213&lt;/name&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;Longitude&gt;26.577014&lt;/Longitude&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;Latitude&gt;104.877977&lt;/Latitude&gt;&lt;/number&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;number id='2'&gt;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;name&gt;112312332131212&lt;/name&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;Longitude&gt;26.586685&lt;/Longitude&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;Latitude&gt;104.863815&lt;/Latitude&gt;&lt;/number&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;number id='3'&gt;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;name&gt;123123121323112&lt;/name&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;Longitude&gt;26.572101&lt;/Longitude&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;Latitude&gt;104.866905&lt;/Latitude&gt;&lt;/number&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;number id='4'&gt;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;name&gt;123132123123321&lt;/name&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;Longitude&gt;26.572254&lt;/Longitude&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;Latitude&gt;104.891624&lt;/Latitude&gt;&lt;/number&gt;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; display: inline !important; font: 14px/21px Tahoma, Helvetica, Arial, STHeiti; white-space: normal; orphans: 2; float: none; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&lt;/earth&gt;</span><img src ="http://www.blogjava.net/youngturk/aggbug/391095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-11-09 15:21 <a href="http://www.blogjava.net/youngturk/archive/2012/11/09/391095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>外网访问虚拟机MYSQL</title><link>http://www.blogjava.net/youngturk/archive/2012/11/09/391084.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Fri, 09 Nov 2012 03:41:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/11/09/391084.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/391084.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/11/09/391084.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/391084.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/391084.html</trackback:ping><description><![CDATA[<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(49,33,0); text-indent: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; font: 14px/25px Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(156,123,81); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">第一步是要创建一个可以远程连接的 MySQL 用户<br style="line-height: 25px" />mysql&gt; GRANT ALL PRIVILEGES ON dbname.* TO<span class="Apple-converted-space">&nbsp;</span><a style="line-height: 25px; color: rgb(195,163,124); text-decoration: none" href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#117;&#115;&#101;&#114;&#39;&#64;&#39;&#37;&#39;" rel="nofollow">'user'@'%'</a>&nbsp; IDENTIFIED BY 'userPWD'&nbsp; WITH GRANT OPTION;<br style="line-height: 25px" />mysql&gt; flush privileges;<br style="line-height: 25px" />### "%"表示任意IP，如果要为特定的user指定从特定的IP访问，方法如下：<br style="line-height: 25px" />mysql&gt; GRANT ALL PRIVILEGES ON dbname.* TO<span class="Apple-converted-space">&nbsp;</span><a style="line-height: 25px; color: rgb(195,163,124); text-decoration: none" href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#117;&#115;&#101;&#114;&#39;&#64;&#39;&#105;&#112;&#39;" rel="nofollow">'user'@'ip'</a>&nbsp; IDENTIFIED BY 'userPWD'&nbsp; WITH GRANT OPTION;<br style="line-height: 25px" />mysql&gt; flush privileges;</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(49,33,0); text-indent: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; font: 14px/25px Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(156,123,81); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">第二步是要修改 mysql 的配置文件 /etc/mysql/my.cnf</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(49,33,0); text-indent: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; font: 14px/25px Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(156,123,81); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">在旧版本中找到 skip-networking，把它注释掉就可以了<br style="line-height: 25px" />#skip-networking</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(49,33,0); text-indent: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; font: 14px/25px Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(156,123,81); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">在新版本中：<br style="line-height: 25px" /># Instead of skip-networking the default is now to listen only on<span class="Apple-converted-space">&nbsp;</span><br style="line-height: 25px" /># localhost which is more compatible and is not less secure.<br style="line-height: 25px" />bind-address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 127.0.0.1</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(49,33,0); text-indent: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; font: 14px/25px Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(156,123,81); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">bind-address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 127.0.0.1 这一行要注释掉<br style="line-height: 25px" />#bind-address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 127.0.0.1</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(49,33,0); text-indent: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; font: 14px/25px Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(156,123,81); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">或者把允许访问的ip 填上<br style="line-height: 25px" />bind-address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 192.168.1.100</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(49,33,0); text-indent: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; font: 14px/25px Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(156,123,81); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">然后重启 MySQL<span class="Apple-converted-space">&nbsp;</span><br style="line-height: 25px" />/etc/init.d/mysql restart</p>
<p style="text-align: left; padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(49,33,0); text-indent: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; font: 14px/25px Arial, Helvetica, simsun, u5b8bu4f53; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(156,123,81); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">以上方法只完成了外网访问的配置，它只允许从主机上访问MYSQL，如果要完全从外网访问则需要将主机的3306端口映射到虚拟机的3306上（当然其它的端口也是可以的）</p><br />虚拟机端口映射:<br /><a href="http://wenku.baidu.com/view/b01c2ccca1c7aa00b52acb62.html">http://wenku.baidu.com/view/b01c2ccca1c7aa00b52acb62.html</a>###<img src ="http://www.blogjava.net/youngturk/aggbug/391084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-11-09 11:41 <a href="http://www.blogjava.net/youngturk/archive/2012/11/09/391084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>框架搭建好后,没有详细的错误信息,主页无法访问.用tomcat去调试,没有详细log..</title><link>http://www.blogjava.net/youngturk/archive/2012/11/08/391032.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Thu, 08 Nov 2012 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/11/08/391032.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/391032.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/11/08/391032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/391032.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/391032.html</trackback:ping><description><![CDATA[<p align="left">这两天在搭建s<a href="http://www.linuxso.com/command/tr.html" target="_blank"><u>tr</u></a>uts2+spring+hibernate框架的过程中遇到如题的错误，在百度和谷歌上查了两天，以致快到了崩溃的边缘。最后还是解决了。这个问题的出现，原因有很多，在这总结如下，以供分享：<br /><br /><br /><br />框架搭建好后，启动服务器出现如下的信息：<br /><br />log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).<br /><br />log4j:WARN Please initialize the log4j system properly.<br /><br />2009-11-6 21:39:17 org.apache.<a href="http://www.linuxso.com/command/cat.html" target="_blank"><u>cat</u></a>alina.core.StandardCont<a href="http://www.linuxso.com/command/ex.html" target="_blank"><u>ex</u></a>t start<br /><br />严重: Error listenerStart<br /><br />2009-11-6 21:39:17 org.apache.catalina.core.StandardContext start<br /><br />严重: Context startup failed <a href="http://www.linuxso.com/command/du.html" target="_blank"><u>du</u></a>e to previous errors<br /><br />2009-11-6 21:39:17 org.apache.catalina.core.StandardHostDeployer install<br /><br />信息: Installing web application at context path /to<a href="http://www.linuxso.com/command/mc.html" target="_blank"><u>mc</u></a>at-docs from URL <a href="http://www.linuxso.com/command/file.html" target="_blank"><u>file</u></a>:D:/server/Tomcat 5.0/webapps/tomcat-docs<br /><br />2009-11-6 21:39:17 org.apache.catalina.core.StandardHostDeployer install<br /><br />信息: Installing web application at context path /webdav from URL file:D:/server/Tomcat 5.0/webapps/webdav<br /><br />。。。。<br /><br /><br /><br />可能出错的地方：<br /><br />1.web.xml文件 web应用部署描述符，里面的部署的xml文件或者类，如果这些找不到就会发生startup failed due to previous errors错误。<br /><br />2.如果在应用spring的话，在配置文件applicationContext.xml中定义的类、xml文件找不到也会报这个错误。<br /><br />3.在web.xml，struts.xml，applicationContext.xml文件中自身有任何一点错误都可能引起上面的这个问题，而不仅仅是附带的文件错误导致。<br /><br />4.如果使用ibatis的话，在SqlMapConfig.xml中定义的xml文件找不到也会报这个错误。（hibernate的配置在整合spring的时候使用spring的配置文件）<br /><br />5.JDK的版本问题，最好使用JDK5.0 或者更高的版本。<br /><br />6.Eclipse和tomcat的版本兼容问题<br /><br />7.框架整合的过程中在导入到lib下的jar包冲突也可能产生该错误。<br /><br />8.jar包的缺少以及jar包的版本也可产生该错误。<br /><br />9.其他的原因<br /><br /><br /><br />解决该问题的途径：<br /><br />由于上面问题可能已经是web服务器内部产生了错误，而且IDE中的Log信息较少，问题的解决很难入手。<br /><br />而该问题的产生经常会导致页面跳转寻找不到文件的 Http 404 错误。。。。。<br /><br />可以通过在tomcat中添加log文件来让log信息提示的更精确一些，即设置log输出的等级。<br /><br />1.tomcat的安装路径下tomcat home下的common文件夹下的classes文件夹中创建log4j.properties文件，即<br /><br />。。。Apache Software Foundation/Tomcat 5.5/common/classes<br /><br />log4j.properties配置如下（配置是转载）：<br /><br />log4j.rootLogger=info,Console,R <br /><br />log4j.appender.Console=org.apache.log4j.ConsoleAppender<br /><br />log4j.appender.Console.layout=org.apache.log4j.PatternLayout<br /><br />#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n<br /><br />log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-<a href="http://www.linuxso.com/command/dd.html" target="_blank"><u>dd</u></a> HH:mm:ss} %5p %c{1}:%L - %m%n<br /><br /><br /><br />log4j.appender.R=org.apache.log4j.DailyRollingFileAppender<br /><br />log4j.appender.R.File=${catalina.home}/logs/tomcat.log <br /><br />log4j.appender.R.layout=org.apache.log4j.PatternLayout<br /><br />log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss} %5p %c{1}(%L):? %m%n <br /><br /><br /><br />log4j.logger.org.apache=info,R<br /><br />log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R <br /><br />log4j.logger.org.apache.catalina.core=info,R<br /><br />log4j.logger.org.apache.catalina.session=info,R<br /><br /><br /><br />2.将log4j-1.2.15.jar和commons-logging.jar包拷贝到。。。Apache Software Foundation/Tomcat 5.5/common/lib下即可。<br /><br /><br /><br />做好上面两步，启动服务器的时候，会在tomcat的安装路径下的。。Apache Software Foundation/Tomcat 5.5/logs下自动的<br /><br />生成tomcat.log文件以记录日志信息。<br /><br />注：tomcat.log文件中的日志信息会记载很多，如果过大就可能产生磁盘空间不足的问题，建议定时的清除日志信息。<br /><br /><br />通过上面的日志文件信息可以定位到比较具体的问题根源，在仔细的查看问题一一攻破即可解决。<br /><br /><br />我在搭建框架之后，在web.xml文件中配置的欢迎页面显示的时候报404的错误，通过上面的途径找到了两个错误，虽然花了两天的时间，最终还是解决了。<br /></p><img src ="http://www.blogjava.net/youngturk/aggbug/391032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-11-08 16:19 <a href="http://www.blogjava.net/youngturk/archive/2012/11/08/391032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle创建自增长序列</title><link>http://www.blogjava.net/youngturk/archive/2012/11/08/391008.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Thu, 08 Nov 2012 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/11/08/391008.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/391008.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/11/08/391008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/391008.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/391008.html</trackback:ping><description><![CDATA[<p>CREATE TABLE orders (<br />&nbsp; id number(11) NOT NULL ,<br />&nbsp; username varchar(22) NOT NULL ,<br />&nbsp; kind varchar(22) NOT NULL ,<br />&nbsp; phone varchar(11) DEFAULT '',<br />&nbsp; email varchar(22) DEFAULT '',<br />&nbsp; qq varchar(12) DEFAULT '',<br />&nbsp; name varchar(30) DEFAULT '',<br />&nbsp; address clob,<br />&nbsp; state varchar(30)&nbsp; DEFAULT '未处理',<br />&nbsp; time date DEFAULT '',<br />&nbsp; comname varchar(50) DEFAULT '',<br />&nbsp; comadd varchar(50) DEFAULT '',<br />&nbsp; PRIMARY KEY (id)<br />)</p>
<p>create sequence member_SEQ<br />minvalue 1<br />maxvalue 9999999<br />start with 21<br />increment by 1<br />cache 20;</p>
<p>CREATE OR REPLACE TRIGGER "member_trig"<br />&nbsp; BEFORE INSERT ON admin<br />&nbsp; REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW<br />DECLARE<br />BEGIN<br />&nbsp; SELECT member_seq.NEXTVAL INTO :NEW.ID FROM DUAL;<br />END member_trig;</p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/youngturk/aggbug/391008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-11-08 11:17 <a href="http://www.blogjava.net/youngturk/archive/2012/11/08/391008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat设置虚拟目录的方法, 不修改server.xml </title><link>http://www.blogjava.net/youngturk/archive/2012/10/10/389276.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Wed, 10 Oct 2012 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/10/10/389276.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/389276.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/10/10/389276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/389276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/389276.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">在tomcat文件夹的conf\catalina\localhost增加project&nbsp;.xml文件<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />文件内容:&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">Context&nbsp;path</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">/project</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;reloadable</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">true</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;docBase</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">E:\javastudio\oob</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;workDir</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">E:\javastudio\oob\work</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />docBase是项目文件夹的web</span><span style="color: #000000">-</span><span style="color: #000000">inf文件夹的上一层目录<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />workDir是指Tomcat解析Jsp转换为Java文件，并编译为class存放的文件夹，设置&nbsp;在项目文件夹里面，可以避免移植到其他地方首次读取jsp文件需要重新解析&nbsp;。一般格式：项目文件夹\work<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />reloadable是指可以重新加载，一般设置为true，方便使用，不需要经常重启Tomcat。&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />以后启动Tomcat，在浏览器输入http:</span><span style="color: #008000">//</span><span style="color: #008000">localhost:8080/project就能访问该项目的welcome文件。</span><span style="color: #008000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">***************</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />为什么要不修改server.xml呢？在Tomcat6的doc帮助文档中，官方是不提倡修改&nbsp;server.xml来添加虚拟目录的！<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而我认为，以上使用的方法，非常方便于项目的移植，移植后，只有修改docBase和workDir的值就行了，甚至可以去掉workDir这个属性！<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">***************</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />代码&nbsp;<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">Context&nbsp;path</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">/ucshop</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;reloadable</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">true</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;docBase</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">G:\UCshop\ucshop</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;workDir</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">G:\UCshop\ucshop\work</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">Resource&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">jdbc/ucshop</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;auth</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Container</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">javax.sql.DataSource</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.microsoft.jdbc.sqlserver.SQLServerDriver</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ucshop</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">sa</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">sa</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxIdle</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">5</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxWait</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">5000</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">10</span><span style="color: #000000">"</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">Context</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />注：如果不需要数据源，可以不写resource标签的部分。<br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div><img src ="http://www.blogjava.net/youngturk/aggbug/389276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-10-10 09:16 <a href="http://www.blogjava.net/youngturk/archive/2012/10/10/389276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcate 报 PermGen space 错误Exception in thread "main" java.lang.OutOfMemoryError: PermGen space</title><link>http://www.blogjava.net/youngturk/archive/2012/07/22/383729.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sun, 22 Jul 2012 12:25:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/07/22/383729.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/383729.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/07/22/383729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/383729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/383729.html</trackback:ping><description><![CDATA[修改myEclipse中window===&gt;preference===&gt;myeclipse==&gt;tomcat==&gt;jdk===&gt;operation Java VM arguments<br />设置:<br /><br />-Xmx256m <br />-Xms256m <br />-XX:PermSize=512m <br />-XX:MaxPermSize=512m <br />-verbose:gc <br /><img src ="http://www.blogjava.net/youngturk/aggbug/383729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-07-22 20:25 <a href="http://www.blogjava.net/youngturk/archive/2012/07/22/383729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PowerDesigner 生成数据字典</title><link>http://www.blogjava.net/youngturk/archive/2012/06/11/380498.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Mon, 11 Jun 2012 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2012/06/11/380498.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/380498.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2012/06/11/380498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/380498.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/380498.html</trackback:ping><description><![CDATA[<div><div>打开 PowerDesigner 打开一个数据模型 CDM 或 PDM</div><div>选择 Report &#8594; Reports</div><div>点击 New Report 新建一个报告</div><div>输入报告名，选择中文，标准报告</div><div>这时显示出来的左边是可使用的项目，右边是报告中已经包含的项目，若是只要数据字典，可以只保留 Title-Tables</div><div>在网上搜到了一个简单的数据字典模板项目如下：</div><div></div><div>+ Title-Tables</div><div>+--+ Table-表格%ITEM%</div><div>+--+--- Table Card-表格%ITEM%的卡片</div><div>+--+--- Table Description-表格%ITEM%的说明</div><div>+--+--- Table Check Constraint Name-表格%ITEM%的约束名称</div><div>+--+--- List of all Dependencies-表格%PARENT%的依赖清单</div><div>+--+--- List of Table Columns-表格%PARENT%的列清单</div><div>+--+--+ Table Column-表格%PARENT%的列%ITEM%</div><div>+--+--+--- Table Columns Card-表格%PARENT%的列%ITEM%的卡片</div><div>+--+--+--- Table Columns Description-表格%PARENT%的列%ITEM%的说明</div><div>+--+--+--- Table Columns Check Constraint Name-表格%PARENT%的列%ITEM%的约束名称</div><div>+--+--+--- List of all Dependencies-列%PARENT%的依赖清单</div><div>+--+--- List of Table Keys-表格%PARENT%的键清单</div><div>+--+--+ Table Key-表格%PARENT%的键的%ITEM%</div><div>+--+--+--- Table Key Card-表格%PARENT%的键%ITEM%的卡片</div><div>+--+--+--- Table Key Description-表格%PARENT%的键%ITEM%的说明</div><div>+--+--+--- List of Columns of Table Key-键%PARENT%的列清单</div><div>+--+--+--- List of all Dependen</div><div></div><div>在这里编辑好报告的格式后，选择 Report &#8594; Generate HTML 或 Generate RTF 生成报告即可</div></div><img src ="http://www.blogjava.net/youngturk/aggbug/380498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2012-06-11 15:07 <a href="http://www.blogjava.net/youngturk/archive/2012/06/11/380498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>50种方法巧妙优化你的SQL Server数据库[拷贝]</title><link>http://www.blogjava.net/youngturk/archive/2007/07/23/131791.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Mon, 23 Jul 2007 00:59:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2007/07/23/131791.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/131791.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2007/07/23/131791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/131791.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/131791.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 查询速度慢的原因很多，常见如下几种：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1、没有索引或者没有用到索引(这是查询慢最常见的问题，是程序设计的缺陷)　　　　2、I/O吞吐量小，形成了瓶颈效应。　　　　3、没有创建计算列导致查询不优化。　　　　4...&nbsp;&nbsp;<a href='http://www.blogjava.net/youngturk/archive/2007/07/23/131791.html'>阅读全文</a><img src ="http://www.blogjava.net/youngturk/aggbug/131791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2007-07-23 08:59 <a href="http://www.blogjava.net/youngturk/archive/2007/07/23/131791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好的检索方法</title><link>http://www.blogjava.net/youngturk/archive/2007/04/05/108722.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Thu, 05 Apr 2007 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2007/04/05/108722.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/108722.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2007/04/05/108722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/108722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/108722.html</trackback:ping><description><![CDATA[<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 id=Code_Closed_Image_161356 onclick="this.style.display='none'; Code_Closed_Text_161356.style.display='none'; Code_Open_Image_161356.style.display='inline'; Code_Open_Text_161356.style.display='inline';" height=16 src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_161356 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_161356.style.display='none'; Code_Closed_Image_161356.style.display='inline'; Code_Closed_Text_161356.style.display='inline';" height=16 src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_161356 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">检索</span><span id=Code_Open_Text_161356 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><img id=Codehighlighter1_26_1871_Open_Image onclick="this.style.display='none'; Codehighlighter1_26_1871_Open_Text.style.display='none'; Codehighlighter1_26_1871_Closed_Image.style.display='inline'; Codehighlighter1_26_1871_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_26_1871_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_26_1871_Closed_Text.style.display='none'; Codehighlighter1_26_1871_Open_Image.style.display='inline'; Codehighlighter1_26_1871_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top>int iCurCnt = 0, iSaveCnt = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(rs_IndexList.next())</span><span id=Codehighlighter1_26_1871_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_26_1871_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Debug.print("TRInventoryManagerEJB&nbsp;:&nbsp;searchNewRegisterSample()&nbsp;iCurCnt3333&nbsp;&nbsp;:&nbsp;"&nbsp;+&nbsp;iCurCnt);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Debug.print("TRInventoryManagerEJB&nbsp;:&nbsp;searchNewRegisterSample()&nbsp;iStartIndex3333&nbsp;&nbsp;:&nbsp;"&nbsp;+&nbsp;iStartIndex);</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_293_341_Open_Image onclick="this.style.display='none'; Codehighlighter1_293_341_Open_Text.style.display='none'; Codehighlighter1_293_341_Closed_Image.style.display='inline'; Codehighlighter1_293_341_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_293_341_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_293_341_Closed_Text.style.display='none'; Codehighlighter1_293_341_Open_Image.style.display='inline'; Codehighlighter1_293_341_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">iCurCnt&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;iStartIndex)&nbsp;</span><span id=Codehighlighter1_293_341_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_293_341_Open_Text><span style="COLOR: #000000">{//从1开始到第iStartIndex条跳出到<span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(rs_IndexList.next())</span><br>&nbsp;<img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB&nbsp;:&nbsp;searchNewRegisterSample()&nbsp;iCurCnt&nbsp;&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;iCurCnt);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB&nbsp;:&nbsp;searchNewRegisterSample()&nbsp;iStartIndex&nbsp;&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;iStartIndex);<br><img id=Codehighlighter1_620_665_Open_Image onclick="this.style.display='none'; Codehighlighter1_620_665_Open_Text.style.display='none'; Codehighlighter1_620_665_Closed_Image.style.display='inline'; Codehighlighter1_620_665_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_620_665_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_620_665_Closed_Text.style.display='none'; Codehighlighter1_620_665_Open_Image.style.display='inline'; Codehighlighter1_620_665_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">iSaveCnt&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;iPageSize&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;iPageSize&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_620_665_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_620_665_Open_Text><span style="COLOR: #000000">{//从第iStartIndex条取iPageSize&nbsp;条<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB&nbsp;:&nbsp;searchNewRegisterSample()&nbsp;iPageSize&nbsp;&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;iPageSize);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB&nbsp;:&nbsp;searchNewRegisterSample()&nbsp;iSaveCnt&nbsp;&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;iSaveCnt);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchTRInfo&nbsp;st_Result&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SearchTRInfo();&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_Result.setTotCnt(iTotalCount);&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB&nbsp;:&nbsp;searchNewRegisterSample()&nbsp;iTotalCount88888&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">iTotalCount);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sReturnItemCode&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rs_IndexList.getString(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sReturnItemName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rs_IndexList.getString(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sReturnItemCreateDate&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rs_IndexList.getString(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sReturnSLPersonID&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rs_IndexList.getString(</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sReturnSLPersonName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rs_IndexList.getString(</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_Result.setItemCode(sReturnItemCode);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_Result.setItemName(sReturnItemName);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_Result.setItemCreateDate(sReturnItemCreateDate);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_Result.setSLPersonID(sReturnSLPersonID);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;st_Result.setSLPersonName(sReturnSLPersonName);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_ReturnInfoList.addElement(st_Result);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></div>
<img src ="http://www.blogjava.net/youngturk/aggbug/108722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2007-04-05 16:14 <a href="http://www.blogjava.net/youngturk/archive/2007/04/05/108722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>检索功能一般步骤：</title><link>http://www.blogjava.net/youngturk/archive/2007/03/08/102595.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Thu, 08 Mar 2007 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2007/03/08/102595.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/102595.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2007/03/08/102595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/102595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/102595.html</trackback:ping><description><![CDATA[
		<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 id="Code_Closed_Image_144044" onclick="this.style.display='none'; Code_Closed_Text_144044.style.display='none'; Code_Open_Image_144044.style.display='inline'; Code_Open_Text_144044.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" />
				<img id="Code_Open_Image_144044" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_144044.style.display='none'; Code_Closed_Image_144044.style.display='inline'; Code_Closed_Text_144044.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" />
				<span id="Code_Closed_Text_144044" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">检索功能一般步骤：</span>
				<span id="Code_Open_Text_144044" style="DISPLAY: none">
						<br />
						<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">.    检索功能一般步骤：<br /><img id="Codehighlighter1_166_2748_Open_Image" onclick="this.style.display='none'; Codehighlighter1_166_2748_Open_Text.style.display='none'; Codehighlighter1_166_2748_Closed_Image.style.display='inline'; Codehighlighter1_166_2748_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_166_2748_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_166_2748_Closed_Text.style.display='none'; Codehighlighter1_166_2748_Open_Image.style.display='inline'; Codehighlighter1_166_2748_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
						<span style="COLOR: #000000">2</span>
						<span style="COLOR: #000000">.    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> Vector getNewItemCodeRequest(CatalogRegistrationRequestInfo cinfo, </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> iStartRow, </span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> iPageSize)</span>
						<span style="COLOR: #0000ff">throws</span>
						<span style="COLOR: #000000"> GenneralFallureException,RemoteException</span>
						<span id="Codehighlighter1_166_2748_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_166_2748_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />connection con </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />preparedStatement ps </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />ResultSet rs </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />Vector vt </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> Vector();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />Vector vtInfo </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> Vector();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />StringBuffer sqlWhere </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> StringBuffer();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />CatalogRegistrationRequestInfo cataInfo </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />String a </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> cinfo.getA();</span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">获得条件传递查询信息</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">String sRequestNo </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> cinfo.getRequestNo ();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />…………….<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />String c </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> cinfo.getC() </span>
								<span style="COLOR: #000000">==</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">null</span>
								<span style="COLOR: #000000">?</span>
								<span style="COLOR: #000000"> “”:cinfo.getC();<br /><img id="Codehighlighter1_529_2525_Open_Image" onclick="this.style.display='none'; Codehighlighter1_529_2525_Open_Text.style.display='none'; Codehighlighter1_529_2525_Closed_Image.style.display='inline'; Codehighlighter1_529_2525_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_529_2525_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_529_2525_Closed_Text.style.display='none'; Codehighlighter1_529_2525_Open_Image.style.display='inline'; Codehighlighter1_529_2525_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />Try</span>
								<span id="Codehighlighter1_529_2525_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_529_2525_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />Con </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> Dbutil.getConnection(DBNames.DB_NAME);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000"> DataSource ds = null; </span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">               InitialContext ctx </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> InitialContext();              <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />               Object obj </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> ctx.lookup(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">mroJNDI</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">);                      <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />               ds </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> (DataSource) obj;                                  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />               conn </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> ds.getConnection();     <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />ctx.close();    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #0000ff">return</span>
										<span style="COLOR: #000000"> conn;</span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">获得连结的过程<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #008000">//<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
										<span style="COLOR: #000000">String sql </span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000"> “select nvl(a.mmmm,b.nnnnnn)QQQQQQ,” </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">选择a,b中不为空字段</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">             </span>
										<span style="COLOR: #000000">+</span>
										<span style="COLOR: #000000">“m.asd_adsf,c.asdf_adsfa,”<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        sqlWhere.append(“from fasdf f, asdfas a, fasdfasd m”);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     sqlWher.append(“where a.mp_flag</span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000">’N’”<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />             </span>
										<span style="COLOR: #000000">+</span>
										<span style="COLOR: #000000">”and f.fasdf._dfsdf</span>
										<span style="COLOR: #000000">=</span>
										<span style="COLOR: #000000">e.oopp_tesx”<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
										<span style="COLOR: #000000">+</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">   and e.item_code=g.imc_item_code(+)</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">表示右连结</span>
										<span style="COLOR: #008000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_1246_2523_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1246_2523_Open_Text.style.display='none'; Codehighlighter1_1246_2523_Closed_Image.style.display='inline'; Codehighlighter1_1246_2523_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1246_2523_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1246_2523_Closed_Text.style.display='none'; Codehighlighter1_1246_2523_Open_Image.style.display='inline'; Codehighlighter1_1246_2523_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span>
										<span style="COLOR: #0000ff">if</span>
										<span style="COLOR: #000000">( sRequestNo </span>
										<span style="COLOR: #000000">!=</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">null</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">&amp;&amp;</span>
										<span style="COLOR: #000000"> sRequestNo.length() </span>
										<span style="COLOR: #000000">&gt;</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">0</span>
										<span style="COLOR: #000000"> ) </span>
										<span id="Codehighlighter1_1246_2523_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
												<img src="http://www.blogjava.net/images/dot.gif" />
										</span>
										<span id="Codehighlighter1_1246_2523_Open_Text">
												<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                sqlWhere.append(</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000"> AND a.request_no = ?</span>
												<span style="COLOR: #000000">"</span>
												<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                vtInfo.addElement(sRequestNo);<br /><img id="Codehighlighter1_1387_1684_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1387_1684_Open_Text.style.display='none'; Codehighlighter1_1387_1684_Closed_Image.style.display='inline'; Codehighlighter1_1387_1684_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1387_1684_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1387_1684_Closed_Text.style.display='none'; Codehighlighter1_1387_1684_Open_Image.style.display='inline'; Codehighlighter1_1387_1684_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span>
												<span style="COLOR: #0000ff">if</span>
												<span style="COLOR: #000000"> ( sItemCodeName </span>
												<span style="COLOR: #000000">!=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #0000ff">null</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">&amp;&amp;</span>
												<span style="COLOR: #000000"> sItemCodeName.length() </span>
												<span style="COLOR: #000000">&gt;</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000"> )</span>
												<span id="Codehighlighter1_1387_1684_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.blogjava.net/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1387_1684_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                sqlWhere.append(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000"> AND ( ((b.buyer_status='C' OR b.buyer_status='G' OR b.buyer_status='R') AND upper(A.ITEM_CODE_NAME) LIKE upper(?) ) OR upper(e.ITEM_CODE_NAME) LIKE upper(?) )</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                vtInfo.addElement(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">%</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000"> sItemCodeName </span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">%</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                vtInfo.addElement(</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">%</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000"> sItemCodeName </span>
														<span style="COLOR: #000000">+</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">%</span>
														<span style="COLOR: #000000">"</span>
														<span style="COLOR: #000000">);</span>
														<span style="COLOR: #008000">//</span>
														<span style="COLOR: #008000">%不完全匹配</span>
														<span style="COLOR: #008000">
																<br />
																<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />
														</span>
														<span style="COLOR: #000000">            }</span>
												</span>
												<span style="COLOR: #000000">
														<br />
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />…………………………………………………<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />ps </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> con.prepareStatement(sql</span>
												<span style="COLOR: #000000">+</span>
												<span style="COLOR: #000000">sqlWhere.toString(),ResultSet.TYPE_SCROLL_INSENSTIVE);<br /><img id="Codehighlighter1_1829_1880_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1829_1880_Open_Text.style.display='none'; Codehighlighter1_1829_1880_Closed_Image.style.display='inline'; Codehighlighter1_1829_1880_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1829_1880_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1829_1880_Closed_Text.style.display='none'; Codehighlighter1_1829_1880_Open_Image.style.display='inline'; Codehighlighter1_1829_1880_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span>
												<span style="COLOR: #0000ff">for</span>
												<span style="COLOR: #000000">(</span>
												<span style="COLOR: #0000ff">int</span>
												<span style="COLOR: #000000"> i </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">1</span>
												<span style="COLOR: #000000">; I </span>
												<span style="COLOR: #000000">&lt;=</span>
												<span style="COLOR: #000000"> vtInfo.size();i</span>
												<span style="COLOR: #000000">++</span>
												<span style="COLOR: #000000">)</span>
												<span id="Codehighlighter1_1829_1880_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.blogjava.net/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_1829_1880_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ps.setString(i,(String)vtInfor.elementAt(i</span>
														<span style="COLOR: #000000">-</span>
														<span style="COLOR: #000000">1</span>
														<span style="COLOR: #000000">))<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span>
												</span>
												<span style="COLOR: #000000">
														<br />
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />rs </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> ps.executeQuery();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />rs.last();</span>
												<span style="COLOR: #008000">//</span>
												<span style="COLOR: #008000">由标指向最后一行</span>
												<span style="COLOR: #008000">
														<br />
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												</span>
												<span style="COLOR: #000000">     </span>
												<span style="COLOR: #0000ff">int</span>
												<span style="COLOR: #000000">    iRowCount </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> rs.getRow();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    vt.addElement(String.valueOf(iRowCount));<br /><img id="Codehighlighter1_2019_2473_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2019_2473_Open_Text.style.display='none'; Codehighlighter1_2019_2473_Closed_Image.style.display='inline'; Codehighlighter1_2019_2473_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2019_2473_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2019_2473_Closed_Text.style.display='none'; Codehighlighter1_2019_2473_Open_Image.style.display='inline'; Codehighlighter1_2019_2473_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
												<span style="COLOR: #0000ff">if</span>
												<span style="COLOR: #000000">(iRowCount </span>
												<span style="COLOR: #000000">&gt;</span>
												<span style="COLOR: #000000"> </span>
												<span style="COLOR: #000000">0</span>
												<span style="COLOR: #000000">)</span>
												<span id="Codehighlighter1_2019_2473_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
														<img src="http://www.blogjava.net/images/dot.gif" />
												</span>
												<span id="Codehighlighter1_2019_2473_Open_Text">
														<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />rs.beforeFirst();<br /><img id="Codehighlighter1_2069_2471_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2069_2471_Open_Text.style.display='none'; Codehighlighter1_2069_2471_Closed_Image.style.display='inline'; Codehighlighter1_2069_2471_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2069_2471_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2069_2471_Closed_Text.style.display='none'; Codehighlighter1_2069_2471_Open_Image.style.display='inline'; Codehighlighter1_2069_2471_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span>
														<span style="COLOR: #0000ff">for</span>
														<span style="COLOR: #000000">(</span>
														<span style="COLOR: #0000ff">int</span>
														<span style="COLOR: #000000"> I</span>
														<span style="COLOR: #000000">=</span>
														<span style="COLOR: #000000">0</span>
														<span style="COLOR: #000000">;I </span>
														<span style="COLOR: #000000">&lt;</span>
														<span style="COLOR: #000000"> ipagesize;I</span>
														<span style="COLOR: #000000">++</span>
														<span style="COLOR: #000000">)</span>
														<span id="Codehighlighter1_2069_2471_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
																<img src="http://www.blogjava.net/images/dot.gif" />
														</span>
														<span id="Codehighlighter1_2069_2471_Open_Text">
																<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_2088_2469_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2088_2469_Open_Text.style.display='none'; Codehighlighter1_2088_2469_Closed_Image.style.display='inline'; Codehighlighter1_2088_2469_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2088_2469_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2088_2469_Closed_Text.style.display='none'; Codehighlighter1_2088_2469_Open_Image.style.display='inline'; Codehighlighter1_2088_2469_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
																<span style="COLOR: #0000ff">while</span>
																<span style="COLOR: #000000">(rs.next())</span>
																<span id="Codehighlighter1_2088_2469_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
																		<img src="http://www.blogjava.net/images/dot.gif" />
																</span>
																<span id="Codehighlighter1_2088_2469_Open_Text">
																		<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    cataInfo </span>
																		<span style="COLOR: #000000">=</span>
																		<span style="COLOR: #000000"> </span>
																		<span style="COLOR: #0000ff">new</span>
																		<span style="COLOR: #000000"> CatalogRegistrationRequestInfo();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    cataInfo.setRequestNoFr(rs.getString(</span>
																		<span style="COLOR: #000000">1</span>
																		<span style="COLOR: #000000">).trim());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    cataInfo.setRequestDate(rs.getString(</span>
																		<span style="COLOR: #000000">2</span>
																		<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    cataInfo.setItemCode(rs.getString(</span>
																		<span style="COLOR: #000000">3</span>
																		<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    cataInfo.setItemCode(rs.getString(</span>
																		<span style="COLOR: #000000">5</span>
																		<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />cataInfo.setItemLocationType(rs.getString(</span>
																		<span style="COLOR: #000000">4</span>
																		<span style="COLOR: #000000">));<br /><img id="Codehighlighter1_2404_2438_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2404_2438_Open_Text.style.display='none'; Codehighlighter1_2404_2438_Closed_Image.style.display='inline'; Codehighlighter1_2404_2438_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2404_2438_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2404_2438_Closed_Text.style.display='none'; Codehighlighter1_2404_2438_Open_Image.style.display='inline'; Codehighlighter1_2404_2438_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span>
																		<span style="COLOR: #0000ff">if</span>
																		<span style="COLOR: #000000">( (rs.getString(</span>
																		<span style="COLOR: #000000">15</span>
																		<span style="COLOR: #000000">).trim()).equals(</span>
																		<span style="COLOR: #000000">"</span>
																		<span style="COLOR: #000000">C</span>
																		<span style="COLOR: #000000">"</span>
																		<span style="COLOR: #000000">) ) </span>
																		<span id="Codehighlighter1_2404_2438_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
																				<img src="http://www.blogjava.net/images/dot.gif" />
																		</span>
																		<span id="Codehighlighter1_2404_2438_Open_Text">
																				<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />cataInfo.setStatusName( </span>
																				<span style="COLOR: #000000">"</span>
																				<span style="COLOR: #000000">申请</span>
																				<span style="COLOR: #000000">"</span>
																				<span style="COLOR: #000000"> );<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span>
																		</span>
																		<span style="COLOR: #000000">
																				<br />
																				<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />vt.addElementInfo(cataInfo);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span>
																</span>
																<span style="COLOR: #000000">
																		<br />
																		<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span>
														</span>
														<span style="COLOR: #000000">
																<br />
																<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span>
												</span>
												<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
												<span style="COLOR: #0000ff">long</span>
												<span style="COLOR: #000000"> endTime </span>
												<span style="COLOR: #000000">=</span>
												<span style="COLOR: #000000"> System.currentTimemillis();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
										</span>
										<span style="COLOR: #000000">
												<br />
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img id="Codehighlighter1_2552_2614_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2552_2614_Open_Text.style.display='none'; Codehighlighter1_2552_2614_Closed_Image.style.display='inline'; Codehighlighter1_2552_2614_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_2552_2614_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2552_2614_Closed_Text.style.display='none'; Codehighlighter1_2552_2614_Open_Image.style.display='inline'; Codehighlighter1_2552_2614_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000"> (SQLException sqe) </span>
								<span id="Codehighlighter1_2552_2614_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_2552_2614_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            sqe.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
										<span style="COLOR: #0000ff">throw</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> EJBException(sqe);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img id="Codehighlighter1_2638_2696_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2638_2696_Open_Text.style.display='none'; Codehighlighter1_2638_2696_Closed_Image.style.display='inline'; Codehighlighter1_2638_2696_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_2638_2696_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2638_2696_Closed_Text.style.display='none'; Codehighlighter1_2638_2696_Open_Image.style.display='inline'; Codehighlighter1_2638_2696_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">catch</span>
								<span style="COLOR: #000000"> (Exception e) </span>
								<span id="Codehighlighter1_2638_2696_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_2638_2696_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            e.printStackTrace();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
										<span style="COLOR: #0000ff">throw</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">new</span>
										<span style="COLOR: #000000"> EJBException(e);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img id="Codehighlighter1_2705_2734_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2705_2734_Open_Text.style.display='none'; Codehighlighter1_2705_2734_Closed_Image.style.display='inline'; Codehighlighter1_2705_2734_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_2705_2734_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2705_2734_Closed_Text.style.display='none'; Codehighlighter1_2705_2734_Open_Image.style.display='inline'; Codehighlighter1_2705_2734_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">finally</span>
								<span id="Codehighlighter1_2705_2734_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
								<span id="Codehighlighter1_2705_2734_Open_Text">
										<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />DBUtil.clearup(con,ps,rs);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />}</span>
								</span>
								<span style="COLOR: #000000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> vt;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</span>
		</div>
<img src ="http://www.blogjava.net/youngturk/aggbug/102595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2007-03-08 14:41 <a href="http://www.blogjava.net/youngturk/archive/2007/03/08/102595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建数据库表</title><link>http://www.blogjava.net/youngturk/archive/2007/01/06/92167.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Sat, 06 Jan 2007 05:21:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2007/01/06/92167.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/92167.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2007/01/06/92167.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/92167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/92167.html</trackback:ping><description><![CDATA[create table 'book'<br />(<br /> 'book_id'   int(11)    not null AUTO_INCREMENT,<br /> 'book_name' varchar(100)   not null default   '',<br /> 'book_author'  varchar(100)    not null default  '',<br /> 'book_price'   double          not null default  '0',<br /> 'image'        varchar(100)    not null default  '',<br /> 'describe'     varchar(200)    not null default  '',<br /> primary key('book_id')<br />) <br />例示：<br />create table 'student'<br />(<br />'student_id' int(11) not null autou_increment,<br />'student_name' varchar(100) not null default '',<br />'student_number' double not null default '0',<br />primary key('student_id')<br />)<img src ="http://www.blogjava.net/youngturk/aggbug/92167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2007-01-06 13:21 <a href="http://www.blogjava.net/youngturk/archive/2007/01/06/92167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库面试笔试题集</title><link>http://www.blogjava.net/youngturk/archive/2006/12/27/90389.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Wed, 27 Dec 2006 14:21:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2006/12/27/90389.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/90389.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2006/12/27/90389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/90389.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/90389.html</trackback:ping><description><![CDATA[第二套题 <br />一、 选择题 <br />1. 以下数据结构中不属于线性数据结构的是____C__。 <br />A、队列 B、线性表 C、二叉树 D、栈 <br />2. 在结构化方法中，用数据流程图（DFD）作为描述工具的软件开发阶段是__B____。 <br /><!--DVNEWS_AD_END-->A、可行性分析 B、需求分析 C、详细设计 D、程序编码 <br />3. 结构化程序设计主要强调的是__B____。 <br />A、程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 <br />4. 在软件生命周期中，能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是_D_____。 <br />A、概要设计 B、详细设计 C、可行性分析 D、需求分析 <br />5. 下列关于栈的叙述中正确的是____D__。A、在栈中只能插入数据 B、在栈中只能删除数据 <br />C、栈是先进先出的线性表 D、栈是先进后出的线性表 <br />6. 下面不属于软件设计原则的是__C____。A、抽象 B、模块化 C、自底向上 D、信息隐蔽 <br />7. 对长度为N的线性表进行顺序查找，在最坏情况下所需要的比较次数为__B____。 <br />A、N+1 B、N C、(N+1)/2 D、N/2 <br />8. 视图设计一般有3种设计次序，下列不属于视图设计的是__B____。 <br />A、自顶向下 B、由外向内 C、由内向外 D、自底向上 <br />9. 下列有关数据库的描述，正确的是_C_____。A、数据库是一个DBF文件 B、数据库是一个关系 <br />C、数据库是一个结构化的数据集合 D、数据库是一组文件 <br />10. 下列说法中，不属于数据模型所描述的内容的是__C____。 <br />A、数据结构 B、数据操作 C、数据查询 D、数据约束 <br />11. 在下面的Visual FoxPro表达式中，运算结果是逻辑真的是_D_____。 <br />A、EMPTY(.NULL.) B、LIKE('acd','ac?') C、AT('a','123abc') D、EMPTY(SPACE(2)) <br />12. 表达式VAL(SUBS("奔腾586",5,1))*Len("visual foxpro")的结果是__D____。 <br />A、13.00 B、14.00 C、45.00 D、65.00 <br />13. 以下关于自由表的叙述，正确的是__C____。 <br />A、全部是用以前版本的FOXPRO（FOXBASE）建立的表 <br />B、可以用Visual FoxPro建立，但是不能把它添加到数据库中 <br />C、自由表可以添加到数据库中，数据库表也可以从数据库中移出成为自由表 <br />D、自由表可以添加到数据库中，但数据库表不可从数据库中移出成为自由表 <br />14. 下面关于数据环境和数据环境中两个表之间的关系的陈述中，_C_____是正确的。 <br />A、数据环境是对象，关系不是对象 B、数据环境不是对象，关系是对象 <br />C、数据环境是对象，关系是数据环境中的对象 D、数据环境和关系均不是对象 <br />15. 在"报表设计器"中，可以使用的控件是__A____。 <br />A、标签、域控件和线条 B、标签、域控件和列表框 <br />C、标签、文本框和列表框 D、布局和数据源 <br />16.用二维表数据来表示实体及实体之间联系的数据模型称为_D_____。 <br />A、实体--联系模型 B、层次模型 C、网状模型 D、关系模型 <br />17. 用来指明复选框的当前选中状态的属性是___C___。A、Selected B、Caption C、Value D、ControlSource <br />18. 使用菜单操作方法打开一个在当前目录下已经存在的查询文件zgjk.qpr后，在命令窗口生成的命令是__B__。 <br />A、OPEN QUERY zgjk.qpr B、MODIFY QUERY zgjk.qpr <br />C、DO QUERY zgjk.qpr D、CREATE QUERY zgjk.qpr <br />19. 可以伴随着表的打开而自动打开的索引是____C__。 <br />A、单一索引文件（IDX） B、复合索引文件（CDX）C、结构化复合索引文件 D、非结构化复合索引文件 <br />20. 在数据库设计器中，建立两个表之间的一对多联系是通过以下索引实现的__A____。 <br />A、"一方"表的主索引或候选索引，"多方"表的普通索引 <br />B、"一方"表的主索引，"多方"表的普通索引或候选索引 <br />C、"一方"表的普通索引，"多方"表的主索引或候选索引 <br />D、"一方"表的普通索引，"多方"表的候选索引或普通索引 <br />21. 下列函数中函数值为字符型的是___B___。 A、DATE() B、TIME() C、YEAR() D、DATETIME() <br />22. 下面对控件的描述正确的是___B___。 <br />A、用户可以在组合框中进行多重选择 B、用户可以在列表框中进行多重选择 <br />C、用户可以在一个选项组中选中多个选项按钮 D、用户对一个表单内的一组复选框只能选中其中一个 <br />23. 确定列表框内的某个条目是否被选定应使用的属性是___D___。 <br />A、Value B、ColumnCount C、ListCount D、Selected <br />24. 设有关系R1和R2，经过关系运算得到结果S，则S是_A_____。 <br />A、一个关系 B、一个表单 C、一个数据库 D、一个数组 <br />25. DBAS指的是___C___。A、数据库管理系统B、数据库系统C、数据库应用系统 D、数据库服务系统 <br />26. 设X="ABC"，Y="ABCD"，则下列表达式中值为.T.的是__C____。A、X=Y B、X==Y C、X$Y D、AT(X,Y)=0 <br />27. 在表结构中，逻辑型、日期型、备注型字段的宽度分别固定为B___。 <br />A、3，8，10 B、1，6，4 C、1，8，任意 D、1，8，4 <br />28. 在标准SQL中，建立视图的命令是___C___。 <br />A、CREATE SCHEMA命令 B、CREATE TABLE命令 C、CREATE VIEW命令 D、CREATE INDEX命令 <br />29. 有关SCAN循环结构，叙述正确的是__B____。 <br />A、SCAN循环结构中的LOOP语句，可将程序流程直接指向循环开始语句SCAN，首先判断EOF()函数的真假 <br />B、在使用SCAN循环结构时，必须打开某一个数据库 <br />C、SCAN循环结构的循环体中必须写有SKIP语句 <br />D、SCAN循环结构，如果省略了<scope>子句\FOR<expll>和WHILE<expl2>条件子句，则直接退出循环 <br />30. 设有图书管理数据库： <br />图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2)) <br />读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20)) <br />借阅(借书证号C(4),总编号C(6),借书日期D(8)) <br />对于图书管理数据库，要查询所藏图书中，各个出版社的图书最高单价、平均单价和册数，下面SQL语句正确的是__D____。 <br />SELECT 出版单位,______,______,______; <br />FROM 图书管理!图书 ______ 出版单位 <br />A、MIN(单价) AVGAGE(单价) COUNT(*) GROUP BY B、MAX(单价) AVG(单价) COUNT(*) ORDER BY <br />C、MAX(单价) AVG(单价) SUM(*) ORDER BY D、MAX(单价) AVG(单价) COUNT(*) GROUP BY <br />31. 设有图书管理数据库： <br />图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2)) <br />读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20)) <br />借阅(借书证号C(4),总编号C(6),借书日期D(8)) <br />对于图书管理数据库，求CIE单位借阅图书的读者的人数。 <br />下面SQL语句正确的是__A____。 <br />SELECT ______ FROM 借阅 WHERE; <br />借书证号 _______ <br />A、COUNT (DISTINCT 借书证号) <br />IN (SELECT 借书证号 FROM 读者 WHERE 单位="CIE") <br />B、COUNT (DISTINCT 借书证号) <br />IN (SELECT 借书证号 FROM 借阅 WHERE 单位="CIE") <br />C、SUM (DISTINCT 借书证号) <br />IN (SELECT 借书证号 FROM 读者 WHERE 单位="CIE") <br />D、SUM (DISTINCT 借书证号) <br />IN (SELECT 借书证号 FOR 借阅 WHERE 单位="CIE") <br />32. 查询订购单号（字符型，长度为4）尾字符是"1"的错误命令是__C____。 <br />A、SELECT * FROM 订单 WHERE SUBSTR(订购单号,4)＝"1" <br />B、SELECT * FROM 订单 WHERE SUBSTR(订购单号,4,1)＝"1" <br />C、SELECT * FROM 订单 WHERE "1"$订购单号 <br />D、SELECT * FROM 订单 WHERE RIGHT(订购单号,1)＝"1" <br />33. 在关系模型中，为了实现"关系中不允许出现相同元组"的约束应使用___B___。 <br />A、临时关键字 B、主关键字 C、外部关键字 D、索引关键字 <br />34. 根据"职工"项目文件生成emp_sys.exe应用程序的命令是__B____。 <br />A、BUILD EXE emp_sys FROM 职工 B、BUILD APP emp_sys.exe FROM 职工 <br />C、LIKE EXE emp_sys FROM 职工 D、LIKE APP emp_sys.exe FROM 职工 <br />35. 当前盘当前目录下有数据库：学院.dbc，其中有"教师"表和"学院"表。 <br />"教师"表： <br /><br />"学院"表： <br /><br />有SQL语句： <br />SELECT DISTINCT 系号 FROM 教师 WHERE 工资&gt;=; <br />ALL (SELECT 工资 FROM 教师 WHERE 系号="02") <br />与如上语句等价的SQL语句是___A___。 <br />A、SELECT DISTINCT 系号 FROM 教师 WHERE工资&gt;=; <br />(SELECT MAX(工资) FROM 教师 WHERE 系号="02") <br />B、SELECT DISTINCT 系号 FROM 教师 WHERE 工资&gt;=; <br />(SELECT MIN(工资) FROM 教师 WHERE 系号="02") <br />C、SELECT DISTINCT 系号 FROM 教师 WHERE 工资&gt;=; <br />ANY(SELECT 工资 FROM 教师 WHERE 系号="02") <br />D、SELECT DISTINCT 系号 FROM 教师 WHERE 工资&gt;=; <br />SOME (SELECT 工资 FROM 教师 WHERE 系号="02") <br />二、 填空题 <br />36. 若按功能划分，软件测试的方法通常分为白盒测试方法和__黑盒____测试方法。 <br />37. 数据库系统的三级模式分别为_概念或概念级_____模式、内部级模式与外部级模式。 <br />38. 在最坏情况下，冒泡排序的时间复杂度为__n(n-1)/2____。 <br />39. 在面向对象方法中，信息隐蔽是通过对象的___封装___性来实现的。 <br />40. 关系模型的数据操纵即是建立在关系上的数据操纵，一般有__查询____、增加、删除和修改四种操作。 <br />41.要把帮助文件设置为复制到硬盘上的Foxhelp.chm文件，需要在"选项"对话框的__文件位置____选项卡上设置。 <br />42. TIME( )的返回值的数据类型是__字符 或    C____类型。 <br />43. 在定义字段有效性规则中，在规则框中输入的表达式中类型是___逻辑表达式_____。 <br />44. 设计报表通常包括两部分内容：_数据源_____和布局。 <br />45. __内部联接____是指只有满足联接条件的记录才包含在查询结果中。 <br />46. 设有图书管理数据库： <br />图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2)) <br />读者(借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20)) <br />借阅(借书证号C(4),总编号C(6),借书日期D(8)) <br />检索书价在15元至25元(含15元和25元)之间的图书的书名、作者、书价和分类号，结果按分类号升序排序。 <br />SELECT 书名,作者,单价,分类号 FROM 图书; <br />WHERE______; <br />ORDER BY______; <br />47. 设有如下关系表R、S和T： <br />R(BH,XM,XB,DWH) <br />S(SWH,DWM) <br />T(BH,XM,XB,DWH) <br />实现R∪T的SQL语句是_______。 <br />48. 设有如下关系表R： <br />R(NO,NAME,SEX,AGE,CLASS) <br />主关键字是NO <br />其中NO为学号，NAME为姓名，SEX为性别，AGE为年龄，CLASS为班号。写出实现下列功能的SQL语句。 <br />插入"95031"班学号为30，姓名为"郑和"的学生记录；_______。 <br />49. 设有如下关系表R： <br />R(NO,NAME,SEX,AGE,CLASS) <br />主关键字是NO <br />其中NO为学号(数值型)，NAME为姓名，SEX为性别，AGE为年龄，CLASS为班号。写出实现下列功能的SQL语句。 <br />删除学号为20的学生记录；______。 <br />第二套题答案 <br />1-5 CBBDD 6-10 CBBCC 11-15 DDCCA 16-20 DCBCA 21-25 BBDAC 26-30 CDCBD 31-35 ACBBA <br />36.黑盒 37.概念或概念级 38.n(n-1)/2 39.封装 40.查询 41.文件位置 42.字符 或 C 43.逻辑表达式 <br />44.数据源 45.内部联接 <br />46. 单价 BETWEEN 15 AND 25 或 单价 BETW 15 AND 25 或 单价 BETWE 15 AND 25 或 单价&gt;=15 and 单价&lt;=25 或 单价&gt;=15 and 单价=&lt;25 或 单价=&gt;15 and 单价&lt;=25 或 单价=&gt;15 and 单价=&lt;25 与 分类号 ASC 或 分类号 <br />47. SELECT * FROM R UNION SELECT * FROM T 或 SELE * FROM R UNIO SELE * FROM T 或 SELECT * FROM R UNIO SELECT * FROM T 或 SELE * FROM R UNION SELE * FROM T <br />48. INSERT INTO R(NO,NAME,CLASS) VALUES(30,"郑和","95031") 或 INSE INTO R(NO,NAME,CLASS) VALUES(30,"郑和","95031") <br />49. DELETE FROM R WHERE NO=20 或 DELE FROM R WHERE NO=20 或 DELE FROM R WHER NO=20 或 DELETE FROM R WHER NO=20 <br /></expl2></expll></scope><img src ="http://www.blogjava.net/youngturk/aggbug/90389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2006-12-27 22:21 <a href="http://www.blogjava.net/youngturk/archive/2006/12/27/90389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的数据库连接编程（JDBC）技术</title><link>http://www.blogjava.net/youngturk/archive/2006/12/27/90260.html</link><dc:creator>youngturk</dc:creator><author>youngturk</author><pubDate>Wed, 27 Dec 2006 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/youngturk/archive/2006/12/27/90260.html</guid><wfw:comment>http://www.blogjava.net/youngturk/comments/90260.html</wfw:comment><comments>http://www.blogjava.net/youngturk/archive/2006/12/27/90260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/youngturk/comments/commentRss/90260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/youngturk/services/trackbacks/90260.html</trackback:ping><description><![CDATA[[本讲的知识要点]：JDBC、JDBC的工作原理，访问数据库的方法、Statement、PreparedStatement、CallableStatement，ResultSet等对象的编程使用<br /><br />9.1 基本知识<br /><br />9.1.1 JDBC：Java DataBase Connectivity（Java 数据库连接技术），它是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口（API--它是一种可用于执行SQL语句的Java API，即由一组用Java语言编写的类与接口所组成）。<br /><br />  有了JDBC从而可以使Java程序员用Java语言来编写完整的数据库方面的应用程序。另外也可以操作保存在多种不同的数据库管理系统中的数据，而与数据库管理系统中数据存储格式无关。同时Java语言的与平台的无关性，不必在不同的系统平台下编写不同的数据库应用程序。 <br /><br />9.1.2 JDBC设计的目的<br /><br />（1）ODBC：微软的ODBC是用C编写的，而且只适用于Windows平台，无法实现跨平台地操作数据库。<br /><br />（2）SQL语言：SQL尽管包含有数据定义、数据操作、数据管理等功能，但它并不是一个完整的编程语言，而且不支持流控制，需要与其它编程语言相配合使用。<br /><br />（3）JDBC的设计：由于Java语言具有健壮性、安全、易使用并自动下载到网络等方面的优点，因此如果采用Java语言来连接数据库，将能克服ODBC局限于某一系统平台的缺陷；将SQL语言与Java语言相互结合起来，可以实现连接不同数据库系统，即使用JDBC可以很容易地把SQL语句传送到任何关系型数据库中。<br /><br />（4）JDBC设计的目的：它是一种规范，设计出它的最主要的目的是让各个数据库开发商为Java程序员提供标准的数据库访问类和接口，使得独立于DBMS的Java应用程序的开发成为可能（数据库改变，驱动程序跟着改变，但应用程序不变）。<br /><br />9.1.3 JDBC的主要功能：（1）创建与数据库的连接；（2）发送SQL语句到任何关系型数据库中;（3）处理数据并查询结果。<br /><br />编程实例：<br /><br />try<br /><br />{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //（1）创建与数据库的连接<br /><br />  Connection con=DriverManager.getConnection("jdbc:odbc:DatabaseDSN","Login","Password");<br /><br />Statement stmt=con.createStatement();<br /><br />ResultSet rs=stmt.executeQuery("select * from DBTableName");//（2）发送SQL语句到数据库中               <br /><br />while(rs.next())<br /><br />{ String name=rs.getString("Name") ;         //（3）处理数据并查询结果。<br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />}<br /><br />rs.close();                                           //（4）关闭<br /><br />stmt.close();<br /><br />con.close();<br /><br />}<br /><br />catch(SQLException e)<br /><br />{   System.out.println("SQLState:"+ e.getSQLState());<br /><br />  System.out.println("Message:" + e.getMessage());<br /><br />  System.out.println("Vendor:" + e.getErrorCode());<br /><br />}<br /><br />9.1.4 JDBC与ODBC的对比，从而体会JDBC的特点<br /><br />（1）ODBC是用C语言编写的，不是面向对象的；而JDBC是用Java编写的，是面向对象的。<br /><br />（2）ODBC难以学习，因为它把简单的功能与高级功能组合在一起，即便是简单的查询也会带有复杂的任选项；而JDBC的设计使得简单的事情用简单的做法来完成。<br /><br />（3）ODBC是局限于某一系统平台的，而JDBC提供Java与平台无关的解决方案。<br /><br />（4）但也可以通过Java来操作ODBC，这可以采用JDBc-ODBC桥接方式来实现（因为Java不能直接使用ODBC，即在Java中使用本地C的代码将带来安全缺陷）。<br /><br />9.1.5 JDBC驱动程序的类型: 目前比较常见的JDBC驱动程序可分为以下四个种类：<br /><br />（1）JDBC-ODBC桥加ODBC驱动程序<br /><br />JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意，必须将ODBC二进制代码（许多情况下还包括数据库客户机代码）加载到使用该驱动程序的每个客户机上。因此，这种类型的驱动程序最适合于企业网（这种网络上客户机的安装不是主要问题），或者是用Java编写的三层结构的应用程序服务器代码。<br /><br />JDBC-ODBC 桥接方式利用微软的开放数据库互连接口(ODBC API)同数据库服务器通讯，客户端计算机首先应该安装并配置ODBC driver 和JDBC-ODBC bridge两种驱动程序。<br /><br />（2）本地API<br /><br />这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意，象桥驱动程序一样，这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。<br /><br />这种驱动方式将数据库厂商的特殊协议转换成Java代码及二进制类码，使Java 数据库客户方与数据库服务器方通信。例如：Oracle用SQLNet协议,DB2用IBM 的数据库协议。数据库厂商的特殊协议也应该被安装在客户机上。<br /><br />（3）JDBC网络纯Java驱动程序<br /><br />这种驱动程序将JDBC转换为与DBMS无关的网络协议，之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常，这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问，它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。<br /><br />这种方式是纯Java driver。数据库客户以标准网络协议(如HTTP、SHTTP)同数据库访问服务器通信，数据库访问服务器然后翻译标准网络协议成为数据库厂商的专有特殊数据库访问协议(也可能用到ODBC driver)与数据库通信。对Internet 和Intranet 用户而言这是一个理想的解决方案。Java driver 被自动的，以透明的方式随Applets自Web服务器而下载并安装在用户的计算机上。<br /><br />（4）本地协议纯Java驱动程序<br /><br />这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器，是Intranet访问的一个很实用的解决方法。<br /><br />这种方式也是纯Java driver。数据库厂商提供了特殊的JDBC协议使Java数据库客户与数据库服务器通信。然而，将把代理协议同数据库服务器通信改用数据库厂商的特殊JDBC driver。这对Intranet 应用是高效的，可是数据库厂商的协议可能不被防火墙支持，缺乏防火墙支持在Internet 应用中会存在潜在的安全隐患。<br /><br />9.2 JDBC的工作原理<br /><br />  JDBC的设计基于X/Open SQL CLI（调用级接口）这一模型。它通过定义出一组 API对象和方法以用于同数据库进行交互。<br /><br /><br /><br />在Java程序中要操作数据库，一般应该通过如下几步（利用JDBC访问数据库的编程步骤）：<br /><br />（1）加载连接数据库的驱动程序 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />（2）创建与数据源的连接<br /><br />String url="jdbc:odbc:DatabaseDSN"; <br /><br />Connection con=DriverManager.getConnection(url,"Login","Password");<br /><br />（3）查询数据库：创建Statement对象并执行SQL语句以返回一个ResultSet对象。<br /><br />Statement stmt=con.createStatement();<br /><br />ResultSet rs=stmt.executeQuery("select * from DBTableName"); <br /><br />（4）获得当前记录集中的某一记录的各个字段的值<br /><br />  String name=rs.getString("Name");<br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />（5）关闭查询语句及与数据库的连接（注意关闭的顺序先rs再stmt最后为con）<br /><br />  rs.close();   <br /><br />  stmt.close();<br /><br />  con.close(); <br /><br />9.3 JDBC的结构<br /><br />  JDBC主要包含两部分：面向Java程序员的JDBC API及面向数据库厂商的JDBC Drive API。<br /><br />（1）面向Java程序员的JDBC API：Java程序员通过调用此API从而实现连接数据库、执行SQL语句并返回结果集等编程数据库的能力，它主要是由一系列的接口定义所构成。<br /><br />java.sql.DriveManager：该接口主要定义了用来处理装载驱动程序并且为创建新的数据库连接提供支持。<br /><br />java.sql.Connection：该接口主要定义了实现对某一种指定数据库连接的功能。<br /><br />java.sql.Statement：该接口主要定义了在一个给定的连接中作为SQL语句执行声明的容器以实现对数据库的操作。它主要包含有如下的两种子类型。<br /><br />  java.sql.PreparedStatement：该接口主要定义了用于执行带或不带 IN 参数的预编译 SQL 语句。<br /><br />  java.sql.CallableStatement：该接口主要定义了用于执行数据库的存储过程的雕用。<br /><br />java.sql.ResultSet：该接口主要定义了用于执行对数据库的操作所返回的结果集。<br /><br />（2）面向数据库厂商的JDBC Drive API：数据库厂商必须提供相应的驱动程序并实现JDBC API所要求的基本接口（每个数据库系统厂商必须提供对DriveManager、Connection、Statement、ResultSet等接口的具体实现），从而最终保证Java程序员通过JDBC实现对不同的数据库操作。<br /><br />9.4 数据库应用的模型<br /><br />（1）两层结构（C/S）：在此模型下，客户端的程序直接与数据库服务器相连接并发送SQL语句（但这时就需要在客户端安装被访问的数据库的JDBC驱动程序），DBMS服务器向客户返回相应的结果，客户程序负责对数据的格式化。<br /><br />client端       ODBC/JDBC         Server端（DBMS）<br /><br />或数据库专用协议   <br /><br /><br /><br /><br /><br />主要的缺点：受数据库厂商的限制，用户更换数据库时需要改写客户程序；受数据库版本的限制，数据库厂商一旦升级数据库，使用该数据库的客户程序需要重新编译和发布；对数据库的操作与处理都是在客户程序中实现，使客户程序在编程与设计时较为复杂。<br /><br /><br /><br />（2）三（或多）层结构（B/S）：在此模型下，主要在客户端的程序与数据库服务器之间增加了一个中间服务器（可以采用C++或Java语言来编程实现），隔离客户端的程序与数据库服务器。客户端的程序（可以简单为通用的浏览器）与中间服务器进行通信，然后由中间服务器处理客户端程序的请求并管理与数据库服务器的连接。<br /><br /><br /><br />客户端程序 HTTP RMI CORBA 中间服务器   JDBC   数据库服务器<br /><br /><br /><br /><br /><br />9.5 通过JDBC 实现对数据库的访问<br /><br />（1）引用必要的包<br /><br />import java.sql.*; //它包含有操作数据库的各个类与接口   <br /><br />（2）加载连接数据库的驱动程序类   <br /><br />  为实现与特定的数据库相连接，JDBC必须加载相应的驱动程序类。这通常可以采用Class.forName()方法显式地加载一个驱动程序类，由驱动程序负责向DriverManager登记注册并在与数据库相连接时，DriverManager将使用此驱动程序。<br /><br />    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />注意：这条语句直接加载了sun公司提供的JDBC-ODBC Bridge驱动程序类。<br /><br />（3）创建与数据源的连接<br /><br />String url="jdbc:odbc:DatabaseDSN"; <br /><br />Connection con=DriverManager.getConnection(url,"Login","Password");<br /><br />注意：采用DriverManager类中的getConnection()方法实现与url所指定的数据源建立连接并返回一个Connection类的对象，以后对这个数据源的操作都是基于该Connection类对象；但对于Access等小型数据库，可以不用给出用户名与密码。<br /><br />String url="jdbc:odbc:DatabaseDSN"; <br /><br />Connection con=DriverManager.getConnection(url);<br /><br />System.out.println(con.getCatalog()); //取得数据库的完整路径及文件名　<br /><br />  JDBC借用了url语法来确定全球的数据库（数据库URL类似于通用的URL），对由url所指定的数据源的表示格式为<br /><br />  jdbc::[ database locator]<br /><br />jdbc---指出要使用JDBC<br /><br />subprotocal---定义驱动程序类型<br /><br />database locator---提供网络数据库的位置和端口号(包括主机名、端口和数据库系统名等)   jdbc:odbc://host.domain.com:port/databasefile   <br /><br />主协议jdbc   驱动程序类型为odbc，它指明JDBC管理器如何访问数据库，该例指名为采用JDBC-ODBC桥接方式；其它为数据库的位置表示。   <br /><br />例如：装载mySQL JDBC驱动程序<br /><br />Class.forName("org.gjt.mm.mysql.Driver ");<br /><br />String url <br /><br />="jdbc:mysql://localhost/softforum?user=soft&amp;password=soft1234&amp;useUnicode=true&amp;characterEncoding=8859_1" <br />　　//testDB为你的数据库名 <br />　　Connection conn= DriverManager.getConnection(url);<br /><br />例如：装载Oracle JDBC OCI驱动程序（用thin模式）<br /><br />Class.forName("oracle.jdbc.driver.OracleDriver ");<br /><br />String url="jdbc:oracle:thin:@localhost:1521:orcl"; <br />　　//orcl为你的数据库的SID <br />　　String user="scott"; <br />　　String password="tiger"; <br />　　Connection conn= DriverManager.getConnection(url,user,password);<br /><br />注意：也可以通过con.setCatalog("MyDatabase")来加载数据库。<br /><br />例如：装载DB2驱动程序<br /><br />Class.forName("com.ibm.db2.jdbc.app.DB2Driver ")<br /><br />String url="jdbc:db2://localhost:5000/sample"; <br />　　//sample为你的数据库名 <br />　　String user="admin"; <br />　　String password=""; <br />　　Connection conn= DriverManager.getConnection(url,user,password); <br /><br /><br /><br />例如：装载MicroSoft SQLServer驱动程序<br /><br />Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver ");<br /><br />String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; <br />　　//pubs为你的数据库的 <br />　　String user="sa"; <br />　　String password=""; 　　<br />　　Connection conn= DriverManager.getConnection(url,user,password);<br /><br />（4）查询数据库的一些结构信息<br /><br />  这主要是获得数据库中的各个表，各个列及数据类型和存储过程等各方面的信息。根据这些信息，从而可以访问一个未知结构的数据库。这主要是通过DatabaseMetaData类的对象来实现并调用其中的方法来获得数据库的详细信息（即数据库的基本信息，数据库中的各个表的情况，表中的各个列的信息及索引方面的信息）。<br /><br />  DatabaseMetaData dbms=con.getMetaData();<br /><br />  System.out.println("数据库的驱动程序为 "+dbms.getDriverName());<br /><br />（5）查询数据库中的数据：<br /><br />  在JDBC中查询数据库中的数据的执行方法可以分为三种类型，分别对应Statement （用于执行不带参数的简单SQL语句字符串），PreparedStatement（预编译SQL语句）和CallableStatement（主要用于执行存储过程）三个接口。<br /><br />9.5.1、实现对数据库的一般查询Statement<br /><br />1、创建Statement对象（要想执行一个SQL查询语句，必须首先创建出Statement对象，它封装代表要执行的SQL语句）并执行SQL语句以返回一个ResultSet对象，这可以通过Connection类中的createStatement()方法来实现。<br /><br />  Statement stmt=con.createStatement();<br /><br />2、执行一个SQL查询语句，以查询数据库中的数据。Statement接口提供了三种执行SQL语句的方法：executeQuery()、executeUpdate() 和execute()。具体使用哪一个方法由SQL语句本身来决定。<br /><br />l     方法 executeQuery 用于产生单个结果集的语句，例如 SELECT 语句等。<br /><br />l     方法 executeUpdate 用于执行INSERT、UPDATE或DELETE 语句以及SQL DDL（数据定义语言）语句，例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数，指示受影响的行数（即更新计数）。对于 CREATE TABLE 或DROP TABLE 等不操作行的语句，executeUpdate 的返回值总为零。<br /><br />l       方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。一般不会需要该高级功能。<br /><br />下面给出通过Statement类中的executeQuery()方法来实现的代码段。executeQuery()方法的输入参数是一个标准的SQL查询语句，其返回值是一个ResultSet类的对象。 <br /><br />ResultSet rs=stmt. executeQuery ("select * from DBTableName");       <br />要点：①JDBC在编译时并不对将要执行的SQL查询语句作任何检查，只是将其作为一个String类对象，直到驱动程序执行SQL查询语句时才知道其是否正确。对于错误的SQL查询语句，在执行时将会产生 SQLException。<br /><br />    ②一个Statement对象在同一时间只能打开一个结果集，对第二个结果集的打开隐含着对第一个结果集的关闭。<br /><br />    ③如果想对多个结果集同时操作，必须创建出多个Statement对象，在每个Statement对象上执行SQL查询语句以获得相应的结果集。<br /><br />    ④如果不需要同时处理多个结果集，则可以在一个Statement对象上顺序执行多个SQL查询语句，对获得的结果集进行顺序操作。 <br /><br />import java.sql.*;<br /><br />public class ResultSetTest<br /><br />{   public static void main(String args[])<br /><br />    {     try<br /><br />          {   <br /><br />            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />            Connection con=DriverManager.getConnection("jdbc:odbc:studlist"); <br /><br />            Statement stmt=con.createStatement();<br /><br />            ResultSet rs1=stmt.executeQuery("select name from student");<br /><br />            ResultSet rs2=stmt.executeQuery("select age from student");<br /><br />//此时rs1已经被关闭             <br /><br />            while(rs2.next())<br /><br />            {   <br /><br />              System.out.println(rs2.getObject(1));<br /><br />            }<br /><br />            rs2.close();<br /><br />            stmt.close();<br /><br />            con.close();<br /><br />          }<br /><br />          catch(Exception e)<br /><br />          {<br /><br />            System.out.println(e);<br /><br />          }   <br /><br />  }<br /><br />}<br /><br />注意：<br /><br />此时显示出的将是姓名还是年龄？（将显示的是rs2的结果集的内容，即学生的年龄，因为采用JDBC-ODBC方式的驱动程序时，并且是采用同一个Statement对象，它只会保留最新的结果集，rs1中的内容将会被新的结果集所取代）。<br /><br />3、 关闭Statement对象：每一个Statement对象在使用完毕后，都应该关闭。<br /><br />  stmt.close(); <br /><br />9.5.2、预编译方式执行SQL语句PreparedStatement<br /><br />  由于Statement对象在每次执行SQL语句时都将该语句传给数据库，如果需要多次执行同一条SQL语句时，这样将导致执行效率特别低，此时可以采用PreparedStatement对象来封装SQL语句。如果数据库支持预编译，它可以将SQL语句传给数据库作预编译，以后每次执行该SQL语句时，可以提高访问速度；但如果数据库不支持预编译，将在语句执行时才传给数据库，其效果类同于Statement对象。<br /><br />  另外PreparedStatement对象的SQL语句还可以接收参数，可以用不同的输入参数来多次执行编译过的语句，较Statement灵活方便（详见后文介绍）。<br /><br />1、 创建PreparedStatement对象：从一个Connection对象上可以创建一个PreparedStatement对象，在创建时可以给出预编译的SQL语句。<br /><br />  PreparedStatement pstmt=con.prepareStatement("select * from DBTableName");<br /><br />2、 执行SQL语句：可以调用executeQuery()来实现，但与Statement方式不同的是，它没有参数，因为在创建PreparedStatement对象时已经给出了要执行的SQL语句，系统并进行了预编译。<br /><br />  ResultSet rs=pstmt.executeQuery(); // 该条语句可以被多次执行 <br /><br />3、关闭PreparedStatement<br /><br />  pstmt.close(); //其实是调用了父类Statement类中的close()方法 <br /><br />9.5.3、执行存储过程CallableStatement<br /><br />  CallableStatement类是PreparedStatement类的子类，因此可以使用在PreparedStatement类及Statement类中的方法，主要用于执行存储过程。<br /><br />1、 创建CallableStatement对象：使用Connection类中的prepareCall方法可以创建一个CallableStatement对象，其参数是一个String对象，一般格式为：<br /><br />l       不带输入参数的存储过程“{call 存储过程名()}”。<br /><br />l     带输入参数的存储过程“{call存储过程名(?, ?)}”<br /><br />l       带输入参数并有返回结果参数的存储过程“{? = call 存储过程名(?, ?, ...)}”<br /><br />  CallableStatement cstmt=con.prepareCall("{call Query1()}");<br /><br />2、 执行存储过程：可以调用executeQuery()方法来实现。<br /><br />  ResultSet rs=cstmt.executeQuery();   <br /><br />3、关闭CallableStatement<br /><br />  cstmt.close(); //其实是调用了父类Statement类中的close()方法 <br /><br />（6）检索记录集以获得当前记录集中的某一记录的各个字段的值<br /><br />9.5.4、ResultSet对象：<br /><br />  ① 执行完毕SQL语句后，将返回一个ResultSet类的对象，它包含所有的查询结果。但对ResultSet类的对象方式依赖于光标（Cursor）的类型，而对每一行中的各个列，可以按任何顺序进行处理（当然，如果按从左到右的顺序对各列进行处理可以获得较高的执行效率）；<br /><br />ResultSet类中的Course方式主要有：<br /><br />ResultSet.TYPE_FORWARD_ONLY（为缺省设置）：光标只能前进不能后退，也就是只能从第一个一直移动到最后一个。<br /><br />ResultSet.TYPE_SCROLL_SENSITIVE：允许光标前进或后退并感应到其它ResultSet的光标的移动情形。<br /><br />ResultSet.TYPE_SCROLL_INSENSITIVE：允许光标前进或后退并不能感应到其它ResultSet的光标的移动情形。<br /><br />ResultSet类中的数据是否允许修改主要有：<br /><br />ResultSet.CONCUR_READ_ONLY（为缺省设置）：表示数据只能只读，不能更改。<br /><br />ResultSet.CONCUR_UPDATABLE：表示数据允许被修改。<br /><br />  可以在创建Statement或PreparedStatement对象时指定ResultSet的这两个特性。<br /><br />Statement stmt=con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);<br /><br />或<br /><br />PreparedStatement pstmt=con.PrepareStatement("insert into bookTable values (?,?,?)",ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);<br />② ResultSet类的对象维持一个指向当前行的指针，利用ResultSet类的next()方法可以移动到下一行（在JDBC中，Java程序一次只能看到一行数据），如果next()的返回值为false，则说明已到记录集的尾部。另外JDBC也没有类似ODBC 的书签功能的方法。<br /><br />  ③ 利用ResultSet类的getXXX()方法可以获得某一列的结果，其中XXX代表JDBC中的Java数据类型，如 getInt()、getString()、getDate()等。访问时需要指定要检索的列（可以采用 int值作为列号（从1开始计数）或指定列（字段）名方式，但字段名不区别字母的大小写）。<br /><br />while(rs.next())<br /><br />{ String name=rs.getString("Name"); //采用“列名”的方式访问数据<br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />  String homeAddress=rs.getString(4); //采用“列号”的方式访问数据<br /><br />}<br /><br />9.5.5、数据转换<br /><br />  利用ResultSet类的getXXX()方法可以实现将ResultSet中的SQL数据类型转换为它所返回的Java数据类型。<br /><br />9.5.6、NULL结果值<br /><br />　　要确定给定结果值是否是JDBC NULL，必须先读取该列，然后使用ResultSet.wasNull<br /><br />方法检查该次读取是否返回JDBC NULL。<br /><br />　　当使用ResultSet.getXXX方法读取JDBC NULL时，方法wasNull将返回下列值之一：<br /><br />（1）Javanull值<br /><br />　　对于返回Java对象的getXXX方法（例如getString、getBigDecimal、getBytes、getDate、getTime、getTimestamp、getAsciiStream、getUnicodeStream、getBinaryStream、getObject等）。<br /><br />（2）零值：对于getByte、getShort、getInt、getLong、getFloat和getDouble。<br /><br />（3）false值：对于getBoolean<br /><br />9.5.6、获得结果集中的结构信息：利用ResultSet类的getMetaData()方法来获得结果集中的一些结构信息（主要提供用来描述列的数量、列的名称、列的数据类型。利用ResulSetMetaData类中的方法）。<br /><br />ResultsetMetaData rsmd=rs.getMetaData();<br /><br />rsmd.getColumnCount();   //返回结果集中的列数         <br /><br />rsmd.getColumnLabel(1); //返回第一列的列名（字段名）<br /><br />例如：<br /><br />Statement stmt=con.createStatement();<br /><br />ResultSet rs=stmt.executeQuery("select * from TableName");<br /><br />for(int i=1; i&lt;=rs.getMetaData().getColumnCount(); i++)   //跟踪显示各个列的名称<br /><br />    {     System.out.print(rs. getColumnName (i)+"\t");<br /><br />    }<br /><br />while(rs.next())<br /><br />{ //跟踪显示各个列的值<br /><br />  for(int j=1; j&lt;=rs.getMetaData().getColumnCount(); j++)<br /><br />    {     System.out.print(rs.getObject(j)+"\t");<br /><br />    }<br /><br />}<br /><br />9.6、更新数据库<br /><br />  前面主要介绍如何实现对数据库的查询操作，但在许多应用中需要实现对数据库的更新，这主要涉及修改、插入和删除等（即SQL语句中的Insert、Update、Delete、Creat、Drap等）。仍然通过创建Statement对象来实现，但不再调用executeQuery()方法，而是使用executeUpdate()方法。<br /><br />要点F：正确区分Statement类中的executeQuery()、execute()和executeUpdate()方法的用法：（1）<br /><br />executeQuery() 执行一般的SQL查询语句（即SELECT语句）并返回Resultset对象；（2）execute()可以执行各种SQL查询语句，并可能返回多个结果集（这一般主要发生在执行了返回多个结果集的存储过程时），此时可以采用Resultset类的getResultSet()来获得当前的结果集；（3）executeUpdate()执行对数据库的更新的SQL语句或DDL语句。<br /><br />9.6.1 对表中的记录进行操作<br /><br />  对一个表中的记录可以进行修改、插入和删除等操作，分别对应SQL的Update、 Insert、Delete操作；executeUpdate()方法的输入参数仍然为一个String对象（即所要执行的SQL语句），但输出参数不是ResultSet对象，而是一个整数（它代表操作所影响的记录行数）。<br /><br />Statement stmt=con.createStatement();<br /><br />stmt.executeUpdate("Update bookTable set Title='Java2' where Author='zhang'");<br /><br /><br /><br />stmt.executeUpdate("Delete from bookTable where Author='zhang'");<br /><br />stmt.executeUpdate("Insert into bookTable(BookID,Author,Title) values(1,'Li Ming','Java2')"); //未给出的列，其值为NULL<br /><br /><br /><br />程序实例：对数据库中的表进行更新操作并显示操作前后的结果<br /><br />import java.sql.*;<br /><br />public class DBUpdateSetTest<br /><br />{   public static void main(String args[])<br /><br />    {     try<br /><br />          {   <br /><br />            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />            Connection con=DriverManager.getConnection("jdbc:odbc:studlist"); <br /><br />            Statement stmt=con.createStatement();<br /><br />            ResultSet rs=stmt.executeQuery("select * from student");<br /><br />            System.out.println("Result before executeUpdate");<br /><br />            while(rs.next())<br /><br />            { <br /><br />                System.out.println(rs.getString("name"));<br /><br />                System.out.println(rs.getString("age"));<br /><br />            }<br /><br />            stmt.executeUpdate("Update student set name='Yang' where id=0");<br /><br />            stmt.executeUpdate("Delete from student where id=2");<br /><br />            stmt.executeUpdate("Insert into student(id,name,age,sex) values(2,'zhang',30,true)");<br /><br />            rs=stmt.executeQuery("select * from student");<br /><br />            System.out.println("Result After executeUpdate");<br /><br />            while(rs.next())<br /><br />            {<br /><br />                System.out.println(rs.getString("name"));<br /><br />                System.out.println(rs.getString("age"));<br /><br />            }<br /><br />            rs.close();<br /><br />            stmt.close();<br /><br />            con.close();<br /><br />            }<br /><br />          catch(Exception e)<br /><br />          {<br /><br />            System.out.println(e);<br /><br />          }   <br /><br />    }<br /><br />}<br /><br />9.6.2 创建和删除表<br /><br />  创建和删除一个表主要对应于SQL的Create Table和Drop Table语句。这可以通过Statement对象的executeUpdate()方法来完成。<br /><br />① 创建表<br /><br />  Statement stmt=con.createStatement();<br /><br />  stmt.executeUpdate("create table TableName(ID integer, Name VARCHAR(20), Age integer)");<br /><br />  stmt.executeUpdate("Insert into TableName(ID, Name, Age) values(1,'Yang Ming',30)");<br /><br />② 删除表<br /><br />  Statement stmt=con.createStatement();<br /><br />  stmt.executeUpdate("Drop Table TableName");<br /><br />9.6.3 增加和删除表中的列<br /><br />对一个表的列进行更新操作主要是使用SQL的ALTER Table语句。对列所进行的更新操作会影响到表中的所有的行。<br /><br />① 增加表中的一列<br /><br />  Statement stmt=con.createStatement();<br /><br />  stmt.executeUpdate("Alter Table TableName add Column Address VarChar(50)");<br /><br />  stmt.executeUpdate("Update TableName set Address='Beijing,China' where ID=1");<br /><br />② 删除表中的一列<br /><br />  Statement stmt=con.createStatement();<br /><br />  stmt.executeUpdate("Alter Table TableName Drop Column Address");<br /><br />  stmt.executeQuery("Select * from TableName");<br /><br />9.6.4 利用PreparedStatement对象实现数据更新<br /><br />  同SQL查询语句一样，对数据更新语句时也可以在PreparedStatement对象上执行。使用PreparedStatement对象，只需传递一次SQL语句，可以多次执行它，并且可以利用数据库的预编译技术，提高执行效率。另外也可以接受参数。<br /><br />  PreparedStatement pstmt=con.prepareStatement("Update TableName set Address='Beijing,China' where ID &gt;1");<br /><br />  pstmt.executeUpdate();<br /><br />9.7 参数的输入与输出<br /><br />  要实现使用SQL语句的输入与输出参数，必须在PreparedStatement类的对象上进行操作；同时由于CallableStatement类是PrepareStatement类的子类，所以在CallableStatemen对象上的操作也可以使用输入与输出参数；其主要的编程原理是在生成CallableStatement或PreparedStatement类的对象时，可以在SQL语句中指定输入或输出参数，在执行这个SQL语句之前，要对输入参数进行赋值。<br /><br />（1）使用PreparedStatement类的对象<br /><br />  通过prepareStatement类的对象可以实现在查询语句与数据更新语句方面都可以设置输入参数。<br /><br />  具体的方法是在SQL语句中用“？”标明参数，在执行SQL语句之前，使用setXXX方法给参数赋值，然后使用executeQuery()或executeUpdate()来执行这个SQL语句。每次执行SQL语句之前，可以给参数重新赋值。<br /><br />  setXXX方法用于给相应的输入参数进行赋值，其中XXX是JDBC的数据类型，如：Int、String等。setXXX方法有两个参数，第一个是要赋值的参数在SQL语句中的位置， SQL语句中的第一个参数的位置为1，第二个参数的位置为2；setXXX方法的第二个参数是要传递的值，如100、“Peking”等，随XXX的不同而为不同的类型。<br /><br />  PreparedStatement pstmt=con.prepareStatement("Update TableName set Name=? where ID=?");<br /><br />  pstmt.setString(1,"zhang Hua"); //设置第一个参数（Name）为 “zhang Hua”<br /><br />  for(int i=1;i&lt;3;i++)<br /><br />  { pstmt.setInt(2,i); //设置第二个参数（ID）为 1,2<br /><br />    pstmt.executeUpdate();<br /><br />  }<br /><br />要点：最终实现 Update TableName set Name=zhang Hua where ID=1 与Update TableName set Name=zhang Hua where ID=2的效果。<br /><br />（2）使用CallableStatement对象<br /><br />  如果要求调用数据库的存储过程，要使用CallableStatement对象。另外还有些存储过程要求用户输入参数，这可以在生成CallableStatement对象的存储过程调用语句中设置输入参数。在执行这个存储过程之前使用setXXX方法给参数赋值，然后再执行这个存储过程。<br /><br />  CallableStatement cstmt=con.prepareCall("{call Query(?)}"); //Query为存储过程名<br /><br />  cstmt.setString(1,"输入参数"); //为存储过程提供输入参数<br /><br />  ResultSet rs=cstmt.executeQuery();<br /><br />（3）接收输出参数<br /><br />  某些存储过程可能会返回输出参数，这时在执行这个存储过程之前，必须使用CallableStatement的registerOutParameter方法首先登记输出参数，在registerOutParameter方法中要给出输出参数的相应位置以及输出参数的SQL数据类型。在执行完存储过程以后，必须使用getXXX方法来获得输出参数的值。并在getXXX方法中要指出获得哪一个输出参数（通过序号来指定）的值。<br /><br />实例：存储过程getTestData有三个输入参数并返回一个输出参数，类型分别为VARCHAR。在执行完毕后，分别使用getString()方法来获得相应的值。<br /><br />CallableStatement cstmt = con.prepareCall(“{? = call getTestData (?,?,?)}”);<br /><br />cstmt.setString(1,Value);                       //设置输入参数<br /><br />cstmt.setInt(2,Value);<br /><br />cstmt.setFloat(3,Value);<br /><br />cstmt.registerOutParameter(1,java.sql.Types.VARCHAR);   //登记输出参数<br /><br />ResultSet rs = cstmt.executeQuery();         //执行存储过程<br /><br />rs.getString(1);                                 //获得第一个字段的值<br /><br />String returnResult=cstmt.getString(1);               //获得返回的输出参数的值<br /><br />要点：由于getXXX方法不对数据类型作任何转换，在registerOutParameter方法中指明数据库将返回的SQL数据类型，在执行完存储过程以后必须采用相应匹配的getXXX方法来获得输出参数的值。<br /><br /><br /><br />9.8 批量处理JDBC语句提高处理速度<br /><br /><br /><br />有时候JDBC运行得不够快，这可以使用数据库相关的存储过程。当然，作为存储过程的一个替代方案，可以试试使用Statement 的批量处理特性以提高速度。 <br /><br /><br /><br />　　存储过程的最简单的形式就是包含一系列SQL语句的过程，将这些语句放在一起便于在同一个地方管理也可以提高速度。Statement 类可以包含一系列SQL语句，因此允许在同一个数据库事务执行所有的那些语句而不是执行对数据库的一系列调用。 <br /><br />　　使用批量处理功能涉及下面的两个方法： <br /><br />　　addBatch(String) 方法 <br /><br />　　executeBatch方法 <br /><br />　　如果你正在使用Statement 那么addBatch 方法可以接受一个通常的SQL语句，或者如果你在使用PreparedStatement ，那么也可以什么都不向它增加。 <br /><br />executeBatch 方法执行那些SQL语句并返回一个int值的数组，这个数组包含每个语句影响的数据的行数。<br /><br />注意：如果将一个SELECT语句或者其他返回一个ResultSet的SQL语句放入批量处理中就会导致一个SQLException异常。 <br /><br />　　关于java.sql.Statement 的简单范例可以是： <br /><br />    con = DriverManager.getConnection(url,"myLogin", "myPassword");<br /><br />    con.setAutoCommit(false);<br /><br />    stmt = con.createStatement(); <br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(4,'Yang',20,True)");<br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(5,'li',20,True)");<br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(6,'zhang',20,True)");<br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(7,'wang',20,True)");<br /><br />    stmt.addBatch("INSERT INTO student " + "VALUES(8,'liu',20,True)");<br /><br /><br /><br />    int [] updateCounts = stmt.executeBatch();<br /><br />    con.commit();<br /><br />    con.setAutoCommit(true);<br /><br /><br /><br />　PreparedStatement 有些不同，它只能处理一部分SQL语法，但是可以有很多参数，因此重写上面的范例的一部分就可以得到下面的结果： <br /><br />　// 注意这里没有删除语句<br /><br />PreparedStatement stmt = conn.prepareStatement(<br /><br />"INSERT INTO student VALUES(?,?,?,?)"<br /><br />);<br /><br />User[ ] users = ...;<br /><br />for(int i=0; i<br /><br />stmt.setInt(1, users<i>.getID());<br /><br />stmt.setString(2, users<i>.getName());<br /><br />stmt.setInt(3, users<i>.getAge());<br /><br />stmt.setBoolean(4, users<i>.getSex());<br /><br />stmt.addBatch( );<br /><br />}<br /><br />int[ ] counts = stmt.executeBatch(); <br /><br />如果你不知道你的语句要运行多少次，那么这是一个很好的处理SQL代码的方法。在不使用批量处理的情况下，如果添加50个用户，那么性能就有影响，如果某个人写了一个脚本添加一万个用户，程序可能变得很糟糕。添加批处理功能就可以帮助提高性能，而且在后面的那种情况下代码的可读性也会更好。<br /></i></i></i></i><img src ="http://www.blogjava.net/youngturk/aggbug/90260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/youngturk/" target="_blank">youngturk</a> 2006-12-27 11:40 <a href="http://www.blogjava.net/youngturk/archive/2006/12/27/90260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>