??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲va无码va在线va天堂,亚洲一区二区三区久久,亚洲第一成年男人的天堂http://www.tkk7.com/youngturk/archive/2013/01/08/393935.htmlyoungturkyoungturkTue, 08 Jan 2013 02:04:00 GMThttp://www.tkk7.com/youngturk/archive/2013/01/08/393935.htmlhttp://www.tkk7.com/youngturk/comments/393935.htmlhttp://www.tkk7.com/youngturk/archive/2013/01/08/393935.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/393935.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/393935.html例如:
<!-- 从jdbc:oracle:thin:@10.128.5.65:1521:tjgwl1 中蟩?服务器间跌{)
        10.128.141.109:1521:tjgwlw数据库后面直接加@tjgwlw-->


youngturk 2013-01-08 10:04 发表评论
]]>
oracle新表的徏?理解表空间含?http://www.tkk7.com/youngturk/archive/2012/11/30/392275.htmlyoungturkyoungturkFri, 30 Nov 2012 05:43:00 GMThttp://www.tkk7.com/youngturk/archive/2012/11/30/392275.htmlhttp://www.tkk7.com/youngturk/comments/392275.htmlhttp://www.tkk7.com/youngturk/archive/2012/11/30/392275.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/392275.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/392275.html然后分配l用戯I间权限卛_,不需要创建新的数据库,在本Z..

youngturk 2012-11-30 13:43 发表评论
]]>
spring中的 l承HibernateDaosupportҎ(gu)http://www.tkk7.com/youngturk/archive/2012/11/22/391725.htmlyoungturkyoungturkThu, 22 Nov 2012 00:59:00 GMThttp://www.tkk7.com/youngturk/archive/2012/11/22/391725.htmlhttp://www.tkk7.com/youngturk/comments/391725.htmlhttp://www.tkk7.com/youngturk/archive/2012/11/22/391725.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/391725.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/391725.html上述的getHibernateTemplateҎ(gu)中的updateҎ(gu)跟数据库讄主键有关,能根据主键更?.个h理解

youngturk 2012-11-22 08:59 发表评论
]]>
ORACLE~程Q存储过E,自学W记Q备份)?/title><link>http://www.tkk7.com/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.tkk7.com/youngturk/archive/2012/11/15/391366.html</guid><wfw:comment>http://www.tkk7.com/youngturk/comments/391366.html</wfw:comment><comments>http://www.tkk7.com/youngturk/archive/2012/11/15/391366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/youngturk/comments/commentRss/391366.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/youngturk/services/trackbacks/391366.html</trackback:ping><description><![CDATA[<p>--创徏q程名称<br />--create procedure 存储q程名字 is begin<br />--create or replace procedure  如果有就替换?br />----------------------------------------------<br />案例1Q?br />--创徏一个表<br />create table mytest(name varchar2(30),passwd varchar2(30));<br />--创徏q程<br />create procedure sq_pro1 is<br />begin<br />--执行部分<br />insert into mytest values('zgx','888666');<br />endQ?/p> <p>-- / 斜线回R</p> <p><br />----------------------------------------------<br />如何查看错误信息Q?br />show error  回R</p> <p>--调用存储q程<br />1.exec q程?参数1Q?....);<br />2.call q程?参数1Q?....);<br />---------------------------------------------------<br />set serveroutput on;打开输出选项<br />set serveroutput off;关闭输出选项<br />dbms_  是包名的意思!<br />案例2Q?br />dbms_output.put_line('helloWorld');  <br />-----------------<br />declare<br /> v_ename varchar2(5);--定义字符串变?br />begin<br /> --into v_ename意?把查询出来数?赋值给 v_ename;&no是执行的时候会弹出输入?br /> select ename into v_ename from emp where empno=&no;<br /> --||代表 q接W号Q?br /> dbms_output.put_line('用户名是Q?||v_ename); <br />end;<br />-----------<br />案例3Q?br />declare<br /> v_ename varchar2(5);--定义字符串变?br /> v_sal number(7,2);--定义字符串变?br />begin<br /> --如果是多个字D,用逗号隔开Q顺序必MPQ?br /> select ename,sal into v_ename,v_sal from emp where empno=&no;<br /> --||代表 q接W号Q?br /> dbms_output.put_line('用户名是Q?||v_ename||'工资Q?||v_sal); <br />end;<br />---------------------<br />--异常的捕?br />exception<br />when no_data_found then --如果出现no_data_found异常执行下一?br />dbms_output.put_line('输入有误Q?);<br />end;<br />------------<br />q程Q?br />案例4Q?br />创徏带输入参数的q程Q?br />create procedure sp_pro3(spNma varchar2,newSal number) is<br />begin<br /> update emp set sal=newSal where ename=spName;<br />end;<br />------------<br />函数Q?br />函数用于q回特定的数据,当徏立函数时Q在函数头部要求有return语句Q?br />案例5Q?br />--输入雇员姓名Q返回该雇员的年?br />--q回一个numbercdQ返回值名字是yearSalQ类型是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 />--声明该包里有一个过Eupdate_sal<br />--生命该包里有一个函数annual_income<br />create package sp_package is<br /> procedure update_sal(name,varchar2,newsal number);<br /> function annual_income(name varchar2, return number;<br />end;<br />l包sp_package 实现包体--把定义包中的 q程和函数实玎ͼ<br />create package body sp_package is<br />procedure update_sal(name,varchar2,newsal number) is<br />begin<br /> 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 />调用包中的过E或函数<br />exec sp_package.update_sal('SCOTT','120');<br />---------------------<br />触发?br />触发器是指隐含的执行的存储过E。当定义触发器时Q必要指定触发的时间和触发的操作,常用触发包括insertQpudateQdelete语句Q而触发操作实际就是一个pl/sql块。可以用create trigger来徏立触发器?br />触发器是非常有用的,可维护数据库的安全和一致性?br />---------<br />定义q用变?br />包括Q?br />1.标量cdQscalarQ?br />2.W合cdQ)</p> <p>---------<br />标量QscalarQ?常用cd<br />语法Q?br />identifier [constant] datatype [not null] [:=| default expr]<br />identifier:名称<br />constantQ指定常量。需要指定它的初始|且其值是不能改变?br />datatypeQ数据类?br />not nullQ?指定变量g能ؓnull<br />Q? l变量或是常量指定初始?br />default 用于指定初始?br />exprQ指定初始值的pl/sql表达式,文本倹{其他变量、函数等<br />------------<br />标量定义的案?br />1.定义一个变长字W串<br />v_ename varchar2(10)<br />2.定义一个小?范围 -9999.99~9999.99<br />v_sal number(6,2)<br />3.定义一个小数ƈl一个初始gؓ5.4 :=pl/sql的赋值号<br />v_sal2 number(6,2):=5.4<br />4.定义一个日期类型的数据<br />v_hiredate date;<br />5.定义一个布?yu)变量,不能为空Q初始gؓfalse<br />v_valid boolean not null default false;<br />---------------<br />如何使用标量<br />   定义好变量后Q就可以使用q些变量。这里需要说明的是pl/sql块ؓ变量赋g同于其他的编E语aQ需要在{号前面加冒?:=)</p> <p>下面以输入员工号Q显C雇员名U、工资、个人所得税(E率?.03Z)。说明变量的使用Q看看如何编写:</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||'工资Q?||v_sal||'所得税Q?||v_tax_sal);<br />end;<br />-----<br />标量QscalarQ?-使用%typecd<br /> 对于上面的pl/sql块有一个问题:<br /> 是如果员工的姓名超q了5字符的话Q就会有错误Qؓ了降低pl/sqlE序的维护工作量Q可以?type属性定义变量,q样他会按照数据库列来确定你定义的变量的cd和长度?br />看看怎么使用?br />语法Q?标识W名 表名.列名%type;</p> <p> declare<br />  v_ename emp.ename%type; --定义变量v_ename 和emp表中列名ename大小cd保持一_<br />---<br />复合变量QcompositeQ?br />用于存放多个值的变量?br />包括Q?br />1.pl/sql记录<br />2.pl/sql?br />---------------<br />复合cd-pl/sql记录<br />  cM与高U语a的结构体Q需要注意的是,当引用pl/sql记录成员Ӟ必须要加记录变量作ؓ前缀Q记录变?记录成员Q?br />如下Q?br />declare<br />--定义一个pl/sql记录cd是:emp_record_typeQ类型包括三个数据nameQsalaryQtitleQ该cd中可以存放三个类型的数据Q?br />type emp_record_type is record(name emp.ename%type,salary emp.sal%type,title  emp.job%type);</p> <p>--定义了一个sp_record变量Q类型是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_typecd?name的|<br />end;<br />end;<br />----------------<br />复合cd--pl/sql?br /> 相当于高U语a中的数组。但是需要注意的是在高语言中数l的下标不能敎ͼ而pl/sql是可以ؓ负数的,q且表元素的下标没有限制。实例如下:<br />declare<br />--定义了一个pl/sql表类型sp_table_typeQ该cd是用于存放emp.ename%typecd的数l?br />--index by binary_integer标识下标是整?br />type sp_table_type is table of emp.ename%type index by binary_integer;<br />--定义了一个sp_table变量Q变量类型是sp_table_type<br />sp_table sp_table_type;<br />begin<br />--把查询出来的ename攑ֈ tableQ?Q下标ؓ0的数?br />select ename into sp_table(0) from emp where empno=7788;<br />dbms_output.put_lin('员工名:'||sp_table(0)); --要和存放下标一?br />end;<br />说明Q?br />sp_table_type  是pl/sql表类?br />emp.ename%type 指定了表的元素的cd和长?br />sp_table       为pl/sql表变?br />sp_table(0)    表示下标??br />---------------<br />参照变量<br />参照变量是指用于存放数值指针的变量。通过使用参照变量Q可以用得应用E序׃n相同对象Q从而降低占用的I间。在~写pl/sqlE序Ӟ可以使用游标变量和对象类型变量两U参照变量类?br />游标变量用的最?br />-----------<br />参照变量---游标变量<br />使用游标Ӟ当定义游标时不需要指定相应的select语句Q但是当使用游标旉要指定select语句Q这样一个游标就与一个select语句l合了?br />如下<br />1.请用pl/sql~写一个块Q可以输入部门号Qƈ昄该部门所有员工姓名和他的工资?br />declare<br /> --定义游标cd<br /> type sp_emp_cursor is ref cursorQ?br /> --定义一个游标变?br /> test_cursor sp_emp_cursorQ?br /> --定义变量<br /> v_ename emp。ename%typeQ?br /> v_sal emp。sal%typeQ?br />begin<br />--执行<br />--打开一个游标test_cursor和一个selectl合<br />open test_cursor for select ename,sal from emp where deptno=&no;<br />--循环取出<br />loop<br /> --fetch是取出。取出test_cursor中的数据攑ֈ v_ename,v_sal里面去;<br /> fetch test_cursor into v_ename,v_salQ?br /> --判断是否test_cursor为空<br /> exit when test_cursor%notfoundQ?br /> dbms_output.put_line('名字Q?||v_ename||'工资Q?||v_sal);<br />end loopQ?br />endQ?/p> <p><br />2.?。基上,如果某个员工的工资低?00元,增?00元?br />declare<br /> --定义游标cd<br /> type sp_emp_cursor is ref cursorQ?br /> --定义一个游标变?br /> test_cursor sp_emp_cursorQ?br /> --定义变量<br /> v_ename emp。ename%typeQ?br /> v_sal emp。sal%typeQ?br />begin<br />--执行<br />--打开一个游标test_cursor和一个selectl合<br />open test_cursor for select ename,sal from emp where deptno=&no;</p> <p>--循环取出<br />loop<br /> --fetch是取出。取出test_cursor中的数据攑ֈ v_ename,v_sal里面去;<br /> fetch test_cursor into v_ename,v_salQ?br /> if v_sal<200 then <br /> update emp set sal=sal+100 where ename=v_ename;<br /> end if;<br /> --判断是否test_cursor为空<br /> exit when test_cursor%notfoundQ?br /> dbms_output.put_line('名字Q?||v_ename||'工资Q?||v_sal);<br />end loopQ?br />endQ?/p> <p> </p> <p> </p> <p>----------<br />条g分支语句<br />if--thenQ?br />if--then--elseQ?br />if--then--elsif--else</p> <p>----<br />循环语句<br />loop --end loopQ至会执行一ơ?br />create or replace procedure sp_pro6() is<br />--定义赋?br />v_num number:=1;<br />begin<br />loop<br /> insert into users1 values(v_num,spName);<br /> --判断是否要退出@?br /> exit when v_num=10;<br /> --自增<br /> 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<=20 loop<br /> insert into users1 values(v_num,spName);<br /> v_num:=v_num+1;<br />end loop;<br />end;<br />------------------<br />循环语句--for循环Q不Q?br />begin<br /> for i in reverse 1。?0 loop<br /> insert into users1 valuesQiQ?aaa'Q;<br /> end loop;<br />endQ?br />-------<br />循环语句--goto,null循环Q不Q?br />declare <br /> i int:=1;<br />begin<br /> loop<br /> dbms_output.put_line('输出i='||i);<br /> if i=10 then<br /> goto end_loop;<br /> end if;<br /> i:=i+1;<br /> end loop;<br /> <<end_loop>>  --到i?0后直接蟩到该标记<br />dbms_output.put_line('循环l束');<br />end;<br />---------------------------<br />无返回值的存储q程Q有输入参数Q?br /> <br />create table book(<br /> bookId number;<br /> bookName varchar2(100);<br /> publishHouse varchar2(50);<br />);<br />--~写q程<br />--in表示q是一个输入参敎ͼ不写默认是in<br />--out 表示一个输出参?br />create or replace procedure sp_pro7(spBookId in numberQspbookName in varchar2,sppublishHouse in varchar2) is<br />begin<br /> insert into book values(spBookId,spbookName,sppublishHouse);<br />end;</p> <p>---------------<br />有返回值的存储q程Q有输入和输出参敎ͼ</p> <p>create or replace procedure sp_pro8(ename in numberQspName out varchar2) is<br />begin<br /> --spName自动q回 因ؓ他是out<br /> select ename into spName from emp where empno=spno;<br />end;<br />----------------<br />有返回值是集合数组的存储过E(有输入和输出参数Q?br />1.建立一个包<br />--创徏?里面定义一个游标类型;<br />create or replace package testpackage as<br />type test_cursor is ref cursor;<br />end testpackageQ?br />2.建立存储q程?br />create or replace procedure sp_pro8(spNo in numberQp_cursor out testpackage.test_cursor) is<br />begin<br /> --spName自动q回 因ؓ他是out<br /> open p_cursor for select * from emp where deptno=spNo;<br />end;</p> <p>Q-Q-Q-Q-Q-Q-<br />oracle的分?nbsp; rn是别?br />select t1.*Qrownum rn from(select * from emp) t1;//多加一个列记录个数<br />select t1.*Qrownum rn from(select * from emp) t1 where rownum<10; <br />select * from (select t1.*Qrownum rn from(select * from emp) t1 where rownum<10) where rn>=6;</p> <p>~写oracle的分?<br />--建立一个包<br />create or replace package testpackage as<br />type test_cursor is ref cursor;<br />end testpackageQ?br />--建立存储q程<br />create or replace procedure fenye<br />(tableName in varchar2,<br />pageSize in number, --一|C几条记?br />pageNow in number,  --昄哪一?br />myrows out number, --总记录数<br />myPageCount out number,--总页?br />p_cursor out testpackage.test_cursor --q回的记录集<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.*Qrownum rn from(select * from '||tableName||') t1 where rownum<10'||?||') where rn>='||?||';';<br />--把游标和sql语句兌h<br />open p_cursor for v_sql;</p> <p>--计算myrows<br />v_sql:='select count(*) from '||tableName||'';<br />--执行sqlQƈ把返回|赋值给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 />例外的分c?br />1.预定义例外用于处理常见的oracle错误<br />2.非预定义例外用于处理预定义例外不能处理的例外  6.53<br />3.自定义例外用于处理与oracle错误无关的其他情?/p> <p> </p> <p> </p> <p><br />------------------------------------------------<br />-----------------------------------------------<br />-------QAQӞ?调用无返回值的存储q程-----------------<br />try{<br /> Class.forName();<br /> Connection ct=DriverManager.getConnerction();<br /> //调用无返回值存储过E?br /> CallableStatement cs=ct.prepareCall("{call 存储q程名称(?,?,?)}") // ?代表存储q程参数<br /> cs.setIn(1,10);<br /> cs.setString(2,'java调用存储q程');<br /> cs.setString(3,'人民出版C?);<br /> //执行<br /> cs.execute();<br /> <br />}catch(Exception e)<br />{<br /> e.printStackTrace();<br />}finally{<br /> cs.close();<br /> ct.close();<br />}</p> <p>------------------------------------------------<br />-----------------------------------------------<br />------QAQӞ?-调用有回值的存储q程-----------------<br />try{<br /> Class.forName();<br /> Connection ct=DriverManager.getConnerction();<br /> //调用有返回值存储过E?br /> CallableStatement cs=ct.prepareCall("{call 存储q程名称(?,?)}") // ?代表存储q程参数 W一是输入,W二是输?br /> //W一?输入参数<br /> cs.setIn(1,10);<br /> //l第二个Q输出D?br /> cs.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR); //<br /> //执行<br /> cs.execute();<br /> //取出q回?<br /> String name=cs。getString(2);<br /> System.out。println("名称是:"+name);<br />}catch(Exception e)<br />{<br /> e.printStackTrace();<br />}finally{<br /> cs.close();<br /> ct.close();<br />}</p> <p>------------------------------------------------<br />-----------------------------------------------<br />-------QAQӞ?调用有回值是多个 数组2011-12-5的存储过E?----------------<br />try{<br /> Class.forName();<br /> Connection ct=DriverManager.getConnerction();<br /> //调用有返回值存储过E?br /> CallableStatement cs=ct.prepareCall("{call 存储q程名称(?,?)}") // ?代表存储q程参数 W一是输入,W二是输?br /> //W一?输入参数<br /> cs.setIn(1,10);<br /> //l第二个Q输出D?br /> cs.registerOutParameter(2,oracle.jdbc.OracleTypes.cursor); //cd是cursor游标<br /> //执行<br /> cs.execute();<br /> //取出q回|l果集)<br /> ReaultSet rs=(ResultSet)cs.getObject(2); //2是第二?<br /> while(rs.next())<br /> {<br />  int =rs。getInt(1); <br />  String name=rs。getString(2);<br />  System.out。println("名称是:"+name);<br /> <br /> }</p> <p>}catch(Exception e)<br />{<br /> e.printStackTrace();<br />}finally{<br /> cs.close();<br /> ct.close();<br />}<br />------------------------------------------------<br />-----------------------------------------------<br />------QAQӞ?-调用有回值的存储q程-----------------<br />try{<br /> Class.forName();<br /> Connection ct=DriverManager.getConnerction();<br /> //调用有返回值存储过E?br /> CallableStatement cs=ct.prepareCall("{call 存储q程名称(?,?)}") // ?代表存储q程参数 W一是输入,W二是输?br /> //W一?输入参数<br /> cs.setIn(1,10);<br /> //l第二个Q输出D?br /> cs.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR); //<br /> //执行<br /> cs.execute();<br /> //取出q回?<br /> String name=cs。getString(2);<br /> System.out。println("名称是:"+name);<br />}catch(Exception e)<br />{<br /> e.printStackTrace();<br />}finally{<br /> cs.close();<br /> ct.close();<br />}</p> <p>------------------------------------------------<br />-----------------------------------------------<br />-------QAQӞ?试分页调用存储q程-----------------<br />try{<br /> Class.forName();<br /> Connection ct=DriverManager.getConnerction();<br /> //调用有返回值存储过E?br /> CallableStatement cs=ct.prepareCall("{call 分页存储q程名称(?,?,?,?,?,?)}") // ?代表存储q程参数 W一是输入,W二是输?br /> //?输入参数<br /> cs.setString(1,'表名'); //表名<br /> cs.setInt(2,5); //一|C几条记?br /> cs.setInt(3,1); //昄W几?br /> //?输出参数<br /> //注册总记录数<br /> cs.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);<br /> //注册总页?br /> cs.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);<br /> //注册q回的结果集<br /> cs.registerOutParameter(4,oracle.jdbc.OracleTypes.CURSOR); //cd是cursor游标</p> <p> <br /> //执行<br /> cs.execute();<br /> //取出总记录数<br /> int rowNum=cs.getInt(4);//4表示参数中第四个Q?br /> //总页?br /> int pageCount=cs.getInt(5);<br /> //q回的记录结?br /> ReaultSet rs=(ResultSet)cs.getObject(6);<br /> while(rs.next())<br /> {<br />  int =rs。getInt(1); <br />  String name=rs。getString(2);<br />  System.out。println("名称是:"+name);<br /> <br /> }</p> <p>}catch(Exception e)<br />{<br /> e.printStackTrace();<br />}finally{<br /> cs.close();<br /> ct.close();<br />}</p> <p>A . 嵌套?</p> <p>1. 声明数组cd <br />       create or replace type tab_array is table of varchar2(38);暂时不要在包中声明该cd </p> <p>2. 创徏存储q程 <br />         -- 该例子存储过E是在包中创建的,包名 arraydemo <br />         procedure testArray(resNumber in tab_array,procResult out tab_array) is <br />         begin <br />             procResult := new tab_array(); <br />             for i in 1..resNumber.Count loop <br />                procResult.EXTEND; <br />                procResult(i) := resNumber(i) || 'lucifer' || i; <br />             end loop; <br />         end; </p> <p>3. Java调用代码 <br />    //必须使用Oracle的连接和Statement,使用了连接池的必通过一些方法获取原始的q接 <br />    OracleConnection conn = null; <br />    OracleCallableStatement stmt = null; <br />    String[] param = { "1001", "1002", "1006" }; <br />    stmt =(转换cd) conn.prepareCall("{call arraydemo.testArray(?,?)}"); <br />    // cd名必d?<br />    ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("TAB_ARRAY", conn); <br />    stmt.setARRAY(1, new ARRAY(descriptor,conn,param)); <br />    stmt.registerOutParameter(2, OracleTypes.ARRAY, "TAB_ARRAY"); <br />    stmt.execute(); <br />   <br />    ARRAY array = stmt.getARRAY(2); <br />    Datum[] data = array.getOracleArray(); <br />    for (int i = 0; i < data.length; i++) { <br />        System.out.println(i + " : " + new String(data.shareBytes())); <br />    } <br />4 . 注意的问题及未解决的问?<br />    抛出:Non supported character set: oracle-character-set-852 异常---解决:d nls_charset12.jar 到classpath,该包在oracle/ora92/jdbc/lib目录?<br />    待解决问? <br />    a) 如何调用在包声明的自定义cd <br />    b) 比较不同声明cd的优~点,及用场?<br />    嵌套表其它应?http://zhouwf0726.itpub.net/post/9689/212253 </p> <p>B . 索引?<br />C . 内置数组 <br />D . 游标方式</p><img src ="http://www.tkk7.com/youngturk/aggbug/391366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/youngturk/" target="_blank">youngturk</a> 2012-11-15 11:28 <a href="http://www.tkk7.com/youngturk/archive/2012/11/15/391366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsdXML文g JSdXML文ghttp://www.tkk7.com/youngturk/archive/2012/11/09/391095.htmlyoungturkyoungturkFri, 09 Nov 2012 07:21:00 GMThttp://www.tkk7.com/youngturk/archive/2012/11/09/391095.htmlhttp://www.tkk7.com/youngturk/comments/391095.htmlhttp://www.tkk7.com/youngturk/archive/2012/11/09/391095.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/391095.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/391095.htmlJavaScript

<script type="text/javascript">
    //<![CDATA[
    //嵌入CDATAD可以防止不兼容Javacript的浏览器不生错误信?br />    //增加正则表达?span class="Apple-converted-space"> 
    String.prototype.getQueryString = function(name) {
        var reg = new RegExp("(^|&|\\?)" + name + "=([^&]*)(&|$)"), r;
        if (r = this.match(reg)) return unescape(r[2]);
        return null;
    };
    var address = location.search.getQueryString("address"); //通过表达式获得传递参?br />    //针对两种览器,分别获取xmlDocument对象// dXML文g   
    function loadXML(xmlFile) {
        var xmlDoc;
        if (window.ActiveXObject) {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.load(xmlFile);
        }
        else if (document.implementation && document.implementation.createDocument) {
            xmlDoc = document.implementation.createDocument("", "", null);
            xmlDoc.async = false;
            xmlDoc.load(xmlFile);
        } else {
            alert('(zhn)的览器不支持该系l脚本!');
        }
        return xmlDoc;
    }   
    //调用地图
    var map; //全局GMap GOOGLE 地图 API
    function load() {
        if (GBrowserIsCompatible()) //查浏览器兼容?br />        {
            map = new GMap2(document.getElementById("map")); //地图加栽到ID为map的DIV中?br />            map.addControl(new GSmallMapControl());   //dGcontrol控g//攑֤~小的那?br />            map.setCenter(new GLatLng(26.577014, 104.877977), 15); //讄地图中心
            //创徏多个坐标点(从INFO.XML文g中读取)
            var xmlDoc = loadXML("Info.xml"); 
            var members = xmlDoc.getElementsByTagName("number");
            var maxRes = members.length;
            for (var i = 0; i <= maxRes; i++) {                       //XML中记录了多个坐标点,要每个点都标C?br />                var oName = members[i].getElementsByTagName("name");
                var oLongitude = members[i].getElementsByTagName("Longitude");
                var oLatitude = members[i].getElementsByTagName("Latitude");

                var name = oName[0].firstChild.nodeValue
                var Longitude = oLongitude[0].firstChild.nodeValue
                var Latitude = oLatitude[0].firstChild.nodeValue        
                
                var marker = new GMarker(new GLatLng(Longitude, Latitude), { title: name });     //Ҏ(gu)个点d标记
                marker.openInfoWindowHtml("<div style=line-height:20px;text-align:center;font-size:12px;'><a href=Left.aspx?info=" + name + " target=framLeft>" + name + ",点击查看信息</a></div>"); 
                map.addOverlay(marker);
            }
        }
    }
    //]]>
</script>

XML文g

<?xml version="1.0" encoding="GB2312"?>   
<earth>   
<number id='1'>    
<name>213211212213213</name>   
<Longitude>26.577014</Longitude>   
<Latitude>104.877977</Latitude></number>   
<number id='2'>    
<name>112312332131212</name>   
<Longitude>26.586685</Longitude>   
<Latitude>104.863815</Latitude></number>   
<number id='3'>    
<name>123123121323112</name>   
<Longitude>26.572101</Longitude>   
<Latitude>104.866905</Latitude></number>   
<number id='4'>    
<name>123132123123321</name>   
<Longitude>26.572254</Longitude>   
<Latitude>104.891624</Latitude></number>   
</earth>

youngturk 2012-11-09 15:21 发表评论
]]>
外网讉K虚拟机MYSQLhttp://www.tkk7.com/youngturk/archive/2012/11/09/391084.htmlyoungturkyoungturkFri, 09 Nov 2012 03:41:00 GMThttp://www.tkk7.com/youngturk/archive/2012/11/09/391084.htmlhttp://www.tkk7.com/youngturk/comments/391084.htmlhttp://www.tkk7.com/youngturk/archive/2012/11/09/391084.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/391084.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/391084.htmlW一步是要创Z个可以远E连接的 MySQL 用户
mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'%'  IDENTIFIED BY 'userPWD'  WITH GRANT OPTION;
mysql> flush privileges;
### "%"表示LIPQ如果要为特定的user指定从特定的IP讉KQ方法如下:
mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'ip'  IDENTIFIED BY 'userPWD'  WITH GRANT OPTION;
mysql> flush privileges;

W二步是要修?mysql 的配|文?/etc/mysql/my.cnf

在旧版本中找?skip-networkingQ把它注释掉可以了
#skip-networking

在新版本中:
# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure.
bind-address           = 127.0.0.1

bind-address           = 127.0.0.1 q一行要注释?br style="line-height: 25px" />#bind-address           = 127.0.0.1

或者把允许讉K的ip 填上
bind-address       = 192.168.1.100

然后重启 MySQL 
/etc/init.d/mysql restart

以上Ҏ(gu)只完成了外网讉K的配|,它只允许从主Z讉KMYSQLQ如果要完全从外|访问则需要将L?306端口映射到虚拟机?306上(当然其它的端口也是可以的Q?/p>
虚拟机端口映?
http://wenku.baidu.com/view/b01c2ccca1c7aa00b52acb62.html###

youngturk 2012-11-09 11:41 发表评论
]]>
框架搭徏好后,没有详细的错误信?主页无法讉K.用tomcat去调?没有详细log..http://www.tkk7.com/youngturk/archive/2012/11/08/391032.htmlyoungturkyoungturkThu, 08 Nov 2012 08:19:00 GMThttp://www.tkk7.com/youngturk/archive/2012/11/08/391032.htmlhttp://www.tkk7.com/youngturk/comments/391032.htmlhttp://www.tkk7.com/youngturk/archive/2012/11/08/391032.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/391032.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/391032.htmlq两天在搭徏struts2+spring+hibernate框架的过E中遇到如题的错误,在百度和h上查了两天,以致快到了崩溃的边缘。最后还是解决了。这个问题的出现Q原因有很多Q在qȝ如下Q以供分享:



框架搭徏好后Q启动服务器出现如下的信息:

log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).

log4j:WARN Please initialize the log4j system properly.

2009-11-6 21:39:17 org.apache.catalina.core.StandardContext start

严重: Error listenerStart

2009-11-6 21:39:17 org.apache.catalina.core.StandardContext start

严重: Context startup failed due to previous errors

2009-11-6 21:39:17 org.apache.catalina.core.StandardHostDeployer install

信息: Installing web application at context path /tomcat-docs from URL file:D:/server/Tomcat 5.0/webapps/tomcat-docs

2009-11-6 21:39:17 org.apache.catalina.core.StandardHostDeployer install

信息: Installing web application at context path /webdav from URL file:D:/server/Tomcat 5.0/webapps/webdav

。。。?br />


可能出错的地方:

1.web.xml文g web应用部v描述W,里面的部|的xml文g或者类Q如果这些找不到׃发生startup failed due to previous errors错误?br />
2.如果在应用spring的话Q在配置文gapplicationContext.xml中定义的cRxml文g找不C会报q个错误?br />
3.在web.xmlQstruts.xmlQapplicationContext.xml文g中自w有M一炚w误都可能引v上面的这个问题,而不仅仅是附带的文g错误D?br />
4.如果使用ibatis的话Q在SqlMapConfig.xml中定义的xml文g找不C会报q个错误。(hibernate的配|在整合spring的时候用spring的配|文Ӟ

5.JDK的版本问题,最好用JDK5.0 或者更高的版本?br />
6.Eclipse和tomcat的版本兼定w?br />
7.框架整合的过E中在导入到l(f)ib下的jar包冲H也可能产生该错误?br />
8.jar包的~少以及jar包的版本也可产生该错误?br />
9.其他的原?br />


解决该问题的途径Q?br />
׃上面问题可能已经是web服务器内部生了错误Q而且IDE中的Log信息较少Q问题的解决很难入手?br />
而该问题的生经怼D面跌{L不到文g?Http 404 错误。。。。?br />
可以通过在tomcat中添加log文g来让log信息提示的更_一些,卌|log输出的等U?br />
1.tomcat的安装\径下tomcat home下的common文g夹下的classes文g夹中创徏log4j.properties文gQ即

。。。Apache Software Foundation/Tomcat 5.5/common/classes

log4j.properties配置如下Q配|是转蝲Q:

log4j.rootLogger=info,Console,R

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n



log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R.File=${catalina.home}/logs/tomcat.log

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss} %5p %c{1}(%L):? %m%n



log4j.logger.org.apache=info,R

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R

log4j.logger.org.apache.catalina.core=info,R

log4j.logger.org.apache.catalina.session=info,R



2.log4j-1.2.15.jar和commons-logging.jar包拷贝到。。。Apache Software Foundation/Tomcat 5.5/common/lib下即可?br />


做好上面两步Q启动服务器的时候,会在tomcat的安装\径下的。。Apache Software Foundation/Tomcat 5.5/logs下自动的

生成tomcat.log文g以记录日志信息?br />
注:tomcat.log文g中的日志信息会记载很多,如果q大可能生磁盘空间不的问题Q徏议定时的清除日志信息?br />

通过上面的日志文件信息可以定位到比较具体的问题根源,在仔l的查看问题一一ȝ卛_解决?br />

我在搭徏框架之后Q在web.xml文g中配|的Ƣ迎面昄的时候报404的错误,通过上面的途径扑ֈ了两个错误,虽然׃两天的时_最l还是解决了?br />



youngturk 2012-11-08 16:19 发表评论
]]>
oracle创徏自增长序?/title><link>http://www.tkk7.com/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.tkk7.com/youngturk/archive/2012/11/08/391008.html</guid><wfw:comment>http://www.tkk7.com/youngturk/comments/391008.html</wfw:comment><comments>http://www.tkk7.com/youngturk/archive/2012/11/08/391008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/youngturk/comments/commentRss/391008.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/youngturk/services/trackbacks/391008.html</trackback:ping><description><![CDATA[<p>CREATE TABLE orders (<br />  id number(11) NOT NULL ,<br />  username varchar(22) NOT NULL ,<br />  kind varchar(22) NOT NULL ,<br />  phone varchar(11) DEFAULT '',<br />  email varchar(22) DEFAULT '',<br />  qq varchar(12) DEFAULT '',<br />  name varchar(30) DEFAULT '',<br />  address clob,<br />  state varchar(30)  DEFAULT '未处?,<br />  time date DEFAULT '',<br />  comname varchar(50) DEFAULT '',<br />  comadd varchar(50) DEFAULT '',<br />  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 />  BEFORE INSERT ON admin<br />  REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW<br />DECLARE<br />BEGIN<br />  SELECT member_seq.NEXTVAL INTO :NEW.ID FROM DUAL;<br />END member_trig;</p> <p> </p><img src ="http://www.tkk7.com/youngturk/aggbug/391008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/youngturk/" target="_blank">youngturk</a> 2012-11-08 11:17 <a href="http://www.tkk7.com/youngturk/archive/2012/11/08/391008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat讄虚拟目录的方? 不修改server.xml http://www.tkk7.com/youngturk/archive/2012/10/10/389276.htmlyoungturkyoungturkWed, 10 Oct 2012 01:16:00 GMThttp://www.tkk7.com/youngturk/archive/2012/10/10/389276.htmlhttp://www.tkk7.com/youngturk/comments/389276.htmlhttp://www.tkk7.com/youngturk/archive/2012/10/10/389276.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/389276.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/389276.html在tomcat文g夹的conf\catalina\localhost增加project .xml文g
文g内容: 
<Context path="/project" reloadable="true" docBase="E:\javastudio\oob" workDir="E:\javastudio\oob\work" />
docBase是项目文件夹的web
-inf文g夹的上一层目?br />workDir是指Tomcat解析Jsp转换为Java文gQƈ~译为class存放的文件夹Q设|?nbsp;在项目文件夹里面Q可以避免移植到其他地方首次djsp文g需要重新解?nbsp;。一般格式:目文g夹\work
reloadable是指可以重新加蝲Q一般设|ؓtrueQ方便用,不需要经帔R启Tomcat?nbsp;
以后启动TomcatQ在览器输入http:
//localhost:8080/projectp讉K该项目的welcome文g?/span>
 
***************
Z么要不修改server.xml呢?在Tomcat6的doc帮助文档中,官方是不提倡修?nbsp;server.xml来添加虚拟目录的Q?br />       而我认ؓQ以上用的Ҏ(gu)Q非常方便于目的移植,UL后,只有修改docBase和workDir的值就行了Q甚臛_以去掉workDirq个属性!
 
***************


代码 

<Context path="/ucshop" reloadable="true" docBase="G:\UCshop\ucshop"  workDir="G:\UCshop\ucshop\work">

<Resource name="jdbc/ucshop" auth="Container"
            type
="javax.sql.DataSource"
            driverClassName
="com.microsoft.jdbc.sqlserver.SQLServerDriver"
            url
="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ucshop"
            username
="sa"
            password
="sa"
            maxIdle
="5"
            maxWait
="5000"
            maxActive
="10"/>

</Context>

注:如果不需要数据源Q可以不写resource标签的部分?br />



youngturk 2012-10-10 09:16 发表评论
]]>
tomcate ?PermGen space 错误Exception in thread "main" java.lang.OutOfMemoryError: PermGen spacehttp://www.tkk7.com/youngturk/archive/2012/07/22/383729.htmlyoungturkyoungturkSun, 22 Jul 2012 12:25:00 GMThttp://www.tkk7.com/youngturk/archive/2012/07/22/383729.htmlhttp://www.tkk7.com/youngturk/comments/383729.htmlhttp://www.tkk7.com/youngturk/archive/2012/07/22/383729.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/383729.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/383729.html讄:

-Xmx256m
-Xms256m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-verbose:gc


youngturk 2012-07-22 20:25 发表评论
]]>
PowerDesigner 生成数据字典http://www.tkk7.com/youngturk/archive/2012/06/11/380498.htmlyoungturkyoungturkMon, 11 Jun 2012 07:07:00 GMThttp://www.tkk7.com/youngturk/archive/2012/06/11/380498.htmlhttp://www.tkk7.com/youngturk/comments/380498.htmlhttp://www.tkk7.com/youngturk/archive/2012/06/11/380498.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/380498.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/380498.html
打开 PowerDesigner 打开一个数据模?CDM ?PDM
选择 Report → Reports
点击 New Report 新徏一个报?/div>
输入报告名,选择中文Q标准报?/div>
q时昄出来的左Ҏ(gu)可用的目Q右Ҏ(gu)报告中已l包含的目Q若是只要数据字典,可以只保?Title-Tables
在网上搜C一个简单的数据字典模板目如下Q?/div>
+ Title-Tables
+--+ Table-表格%ITEM%
+--+--- Table Card-表格%ITEM%的卡?/div>
+--+--- Table Description-表格%ITEM%的说?/div>
+--+--- Table Check Constraint Name-表格%ITEM%的约束名U?/div>
+--+--- List of all Dependencies-表格%PARENT%的依赖清?/div>
+--+--- List of Table Columns-表格%PARENT%的列清单
+--+--+ Table Column-表格%PARENT%的列%ITEM%
+--+--+--- Table Columns Card-表格%PARENT%的列%ITEM%的卡?/div>
+--+--+--- Table Columns Description-表格%PARENT%的列%ITEM%的说?/div>
+--+--+--- Table Columns Check Constraint Name-表格%PARENT%的列%ITEM%的约束名U?/div>
+--+--+--- List of all Dependencies-?PARENT%的依赖清?/div>
+--+--- List of Table Keys-表格%PARENT%的键清单
+--+--+ Table Key-表格%PARENT%的键?ITEM%
+--+--+--- Table Key Card-表格%PARENT%的键%ITEM%的卡?/div>
+--+--+--- Table Key Description-表格%PARENT%的键%ITEM%的说?/div>
+--+--+--- List of Columns of Table Key-?PARENT%的列清单
+--+--+--- List of all Dependen
在这里编辑好报告的格式后Q选择 Report → Generate HTML ?Generate RTF 生成报告卛_


youngturk 2012-06-11 15:07 发表评论
]]>50U方法y妙优化你的SQL Server数据库[拯]http://www.tkk7.com/youngturk/archive/2007/07/23/131791.htmlyoungturkyoungturkMon, 23 Jul 2007 00:59:00 GMThttp://www.tkk7.com/youngturk/archive/2007/07/23/131791.htmlhttp://www.tkk7.com/youngturk/comments/131791.htmlhttp://www.tkk7.com/youngturk/archive/2007/07/23/131791.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/131791.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/131791.html1、没有烦引或者没有用到烦?q是查询慢最常见的问题,是程序设计的~陷)    2、I/O吞吐量小QŞ成了瓉效应。    3、没有创列D查询不优化。    4...  阅读全文

youngturk 2007-07-23 08:59 发表评论
]]>
好的索方?/title><link>http://www.tkk7.com/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.tkk7.com/youngturk/archive/2007/04/05/108722.html</guid><wfw:comment>http://www.tkk7.com/youngturk/comments/108722.html</wfw:comment><comments>http://www.tkk7.com/youngturk/archive/2007/04/05/108722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/youngturk/comments/commentRss/108722.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/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.tkk7.com/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.tkk7.com/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.tkk7.com/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.tkk7.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>int iCurCnt = 0, iSaveCnt = 0;<br>         <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.tkk7.com/Images/dot.gif"></span><span id=Codehighlighter1_26_1871_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Debug.print("TRInventoryManagerEJB : searchNewRegisterSample() iCurCnt3333  : " + iCurCnt);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Debug.print("TRInventoryManagerEJB : searchNewRegisterSample() iStartIndex3333  : " + 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.tkk7.com/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.tkk7.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">iCurCnt </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> iStartIndex) </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.tkk7.com/Images/dot.gif"></span><span id=Codehighlighter1_293_341_Open_Text><span style="COLOR: #000000">{//?开始到WiStartIndex条蟩出到<span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(rs_IndexList.next())</span><br> <img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                    </span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br><img src="http://www.tkk7.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>                }</span></span><span style="COLOR: #000000"><br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB : searchNewRegisterSample() iCurCnt  : </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> iCurCnt);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB : searchNewRegisterSample() iStartIndex  : </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> 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.tkk7.com/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.tkk7.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">iSaveCnt </span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> iPageSize </span><span style="COLOR: #000000">&&</span><span style="COLOR: #000000"> iPageSize </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </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.tkk7.com/Images/dot.gif"></span><span id=Codehighlighter1_620_665_Open_Text><span style="COLOR: #000000">{//从第iStartIndex条取iPageSize ?br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                    </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.tkk7.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>                }</span></span><span style="COLOR: #000000"><br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB : searchNewRegisterSample() iPageSize  : </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> iPageSize);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB : searchNewRegisterSample() iSaveCnt  : </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> iSaveCnt);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                SearchTRInfo st_Result </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> SearchTRInfo(); <br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                st_Result.setTotCnt(iTotalCount);  <br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                Debug.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TRInventoryManagerEJB : searchNewRegisterSample() iTotalCount88888 : </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">iTotalCount);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                <br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                sReturnItemCode </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rs_IndexList.getString(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                sReturnItemName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rs_IndexList.getString(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                sReturnItemCreateDate </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rs_IndexList.getString(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                sReturnSLPersonID </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rs_IndexList.getString(</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                sReturnSLPersonName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rs_IndexList.getString(</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>    <br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                <br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                st_Result.setItemCode(sReturnItemCode);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                st_Result.setItemName(sReturnItemName);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                st_Result.setItemCreateDate(sReturnItemCreateDate);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                st_Result.setSLPersonID(sReturnSLPersonID);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                st_Result.setSLPersonName(sReturnSLPersonName);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                <br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                v_ReturnInfoList.addElement(st_Result);<br><img src="http://www.tkk7.com/Images/OutliningIndicators/InBlock.gif" align=top>                <br><img src="http://www.tkk7.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>            }</span></span></span></div> <img src ="http://www.tkk7.com/youngturk/aggbug/108722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/youngturk/" target="_blank">youngturk</a> 2007-04-05 16:14 <a href="http://www.tkk7.com/youngturk/archive/2007/04/05/108722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>索功能一般步骤:http://www.tkk7.com/youngturk/archive/2007/03/08/102595.htmlyoungturkyoungturkThu, 08 Mar 2007 06:41:00 GMThttp://www.tkk7.com/youngturk/archive/2007/03/08/102595.htmlhttp://www.tkk7.com/youngturk/comments/102595.htmlhttp://www.tkk7.com/youngturk/archive/2007/03/08/102595.html#Feedback0http://www.tkk7.com/youngturk/comments/commentRss/102595.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/102595.html 索功能一般步骤:


youngturk 2007-03-08 14:41 发表评论
]]>创徏数据库表http://www.tkk7.com/youngturk/archive/2007/01/06/92167.htmlyoungturkyoungturkSat, 06 Jan 2007 05:21:00 GMThttp://www.tkk7.com/youngturk/archive/2007/01/06/92167.htmlhttp://www.tkk7.com/youngturk/comments/92167.htmlhttp://www.tkk7.com/youngturk/archive/2007/01/06/92167.html#Feedback1http://www.tkk7.com/youngturk/comments/commentRss/92167.htmlhttp://www.tkk7.com/youngturk/services/trackbacks/92167.html(
 'book_id'   int(11)    not null AUTO_INCREMENT,
 'book_name' varchar(100)   not null default   '',
 'book_author'  varchar(100)    not null default  '',
 'book_price'   double          not null default  '0',
 'image'        varchar(100)    not null default  '',
 'describe'     varchar(200)    not null default  '',
 primary key('book_id')
)
例示Q?br />create table 'student'
(
'student_id' int(11) not null autou_increment,
'student_name' varchar(100) not null default '',
'student_number' double not null default '0',
primary key('student_id')
)

youngturk 2007-01-06 13:21 发表评论
]]>
数据库面试笔试题?/title><link>http://www.tkk7.com/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.tkk7.com/youngturk/archive/2006/12/27/90389.html</guid><wfw:comment>http://www.tkk7.com/youngturk/comments/90389.html</wfw:comment><comments>http://www.tkk7.com/youngturk/archive/2006/12/27/90389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/youngturk/comments/commentRss/90389.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/youngturk/services/trackbacks/90389.html</trackback:ping><description><![CDATA[W二套题 <br />一?选择?<br />1. 以下数据l构中不属于U性数据结构的是____C__?<br />A、队?B、线性表 C、二叉树 D、栈 <br />2. 在结构化Ҏ(gu)中,用数据流E图QDFDQ作为描q工L软g开发阶D|__B____?<br /><!--DVNEWS_AD_END-->A、可行性分?B、需求分?C、详l设?D、程序编?<br />3. l构化程序设计主要强调的是__B____?<br />A、程序的规模 B、程序的易读?C、程序的执行效率 D、程序的可移植?<br />4. 在Y件生命周期中Q能准确地确定Y件系l必d什么和必须具备哪些功能的阶D|_D_____?<br />A、概要设?B、详l设?C、可行性分?D、需求分?<br />5. 下列关于栈的叙述中正的是____D__。A、在栈中只能插入数据 B、在栈中只能删除数据 <br />C、栈是先q先出的U性表 D、栈是先q后出的U性表 <br />6. 下面不属于Y件设计原则的是__C____。A、抽?B、模块化 C、自底向?D、信息隐?<br />7. 寚w度ؓN的线性表q行序查找Q在最坏情况下所需要的比较ơ数为__B____?<br />A、N+1 B、N C?N+1)/2 D、N/2 <br />8. 视图设计一般有3U设计次序,下列不属于视图设计的是__B____?<br />A、自向?B、由外向?C、由内向?D、自底向?<br />9. 下列有关数据库的描述Q正的是_C_____。A、数据库是一个DBF文g B、数据库是一个关p?<br />C、数据库是一个结构化的数据集?D、数据库是一l文?<br />10. 下列说法中,不属于数据模型所描述的内容的是__C____?<br />A、数据结?B、数据操?C、数据查?D、数据约?<br />11. 在下面的Visual FoxPro表达式中Q运结果是逻辑真的是_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?3.00 B?4.00 C?5.00 D?5.00 <br />13. 以下关于自由表的叙述Q正的是__C____?<br />A、全部是用以前版本的FOXPROQFOXBASEQ徏立的?<br />B、可以用Visual FoxPro建立Q但是不能把它添加到数据库中 <br />C、自p可以d到数据库中,数据库表也可以从数据库中Ud成ؓ自由?<br />D、自p可以d到数据库中,但数据库表不可从数据库中Ud成ؓ自由?<br />14. 下面关于数据环境和数据环境中两个表之间的关系的陈qCQ_C_____是正的?<br />A、数据环境是对象Q关pM是对?B、数据环境不是对象,关系是对?<br />C、数据环境是对象Q关pL数据环境中的对象 D、数据环境和关系均不是对?<br />15. ?报表设计?中,可以使用的控件是__A____?<br />A、标{、域控g和线?B、标{、域控g和列表框 <br />C、标{、文本框和列表框 D、布局和数据源 <br />16.用二l表数据来表C实体及实体之间联系的数据模型称为_D_____?<br />A、实?-联系模型 B、层ơ模?C、网状模?D、关pL?<br />17. 用来指明复选框的当前选中状态的属性是___C___。A、Selected B、Caption C、Value D、ControlSource <br />18. 使用菜单操作Ҏ(gu)打开一个在当前目录下已l存在的查询文gzgjk.qpr后,在命令窗口生成的命o是__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、单一索引文gQIDXQ?B、复合烦引文ӞCDXQC、结构化复合索引文g D、非l构化复合烦引文?<br />20. 在数据库设计器中Q徏立两个表之间的一对多联系是通过以下索引实现的__A____?<br />A?一?表的ȝ引或候选烦引,"多方"表的普通烦?<br />B?一?表的ȝ引,"多方"表的普通烦引或候选烦?<br />C?一?表的普通烦引,"多方"表的ȝ引或候选烦?<br />D?一?表的普通烦引,"多方"表的候选烦引或普通烦?<br />21. 下列函数中函数gؓ字符型的是___B___?A、DATE() B、TIME() C、YEAR() D、DATETIME() <br />22. 下面Ҏ(gu)件的描述正确的是___B___?<br />A、用户可以在l合框中q行多重选择 B、用户可以在列表框中q行多重选择 <br />C、用户可以在一个选项l中选中多个选项按钮 D、用户对一个表单内的一l复选框只能选中其中一?<br />23. 定列表框内的某个条目是否被选定应用的属性是___D___?<br />A、Value B、ColumnCount C、ListCount D、Selected <br />24. 设有关系R1和R2Q经q关p运得到结果SQ则S是_A_____?<br />A、一个关p?B、一个表?C、一个数据库 D、一个数l?<br />25. DBAS指的是___C___。A、数据库理pȝB、数据库pȝC、数据库应用pȝ D、数据库服务pȝ <br />26. 设X="ABC"QY="ABCD"Q则下列表达式中gؓ.T.的是__C____。A、X=Y B、X==Y C、X$Y D、AT(X,Y)=0 <br />27. 在表l构中,逻辑型、日期型、备注型字段的宽度分别固定ؓB___?<br />A?Q?Q?0 B?Q?Q? C?Q?QQ?D?Q?Q? <br />28. 在标准SQL中,建立视图的命令是___C___?<br />A、CREATE SCHEMA命o B、CREATE TABLE命o C、CREATE VIEW命o D、CREATE INDEX命o <br />29. 有关SCAN循环l构Q叙q正的是__B____?<br />A、SCAN循环l构中的LOOP语句Q可程序流E直接指向@环开始语句SCANQ首先判断EOF()函数的真?<br />B、在使用SCAN循环l构Ӟ必须打开某一个数据库 <br />C、SCAN循环l构的@环体中必d有SKIP语句 <br />D、SCAN循环l构Q如果省略了<scope>子句\FOR<expll>和WHILE<expl2>条g子句Q则直接退出@?<br />30. 设有图书理数据库: <br />图书(ȝ号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单h(hun)N(6,2)) <br />读?借书证号C(4),单位C(8),姓名C(6),性别C(2),职称C(6),地址C(20)) <br />借阅(借书证号C(4),ȝ号C(6),借书日期D(8)) <br />对于图书理数据库,要查询所藏图书中Q各个出版社的图书最高单仗^均单价和册数Q下面SQL语句正确的是__D____?<br />SELECT 出版单位,______,______,______; <br />FROM 图书理!图书 ______ 出版单位 <br />A、MIN(单h(hun)) AVGAGE(单h(hun)) COUNT(*) GROUP BY B、MAX(单h(hun)) AVG(单h(hun)) COUNT(*) ORDER BY <br />C、MAX(单h(hun)) AVG(单h(hun)) SUM(*) ORDER BY D、MAX(单h(hun)) AVG(单h(hun)) COUNT(*) GROUP BY <br />31. 设有图书理数据库: <br />图书(ȝ号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单h(hun)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. 查询订购单号Q字W型Q长度ؓ4Q尾字符?1"的错误命令是__C____?<br />A、SELECT * FROM 订单 WHERE SUBSTR(订购单号,4)Q?1" <br />B、SELECT * FROM 订单 WHERE SUBSTR(订购单号,4,1)Q?1" <br />C、SELECT * FROM 订单 WHERE "1"$订购单号 <br />D、SELECT * FROM 订单 WHERE RIGHT(订购单号,1)Q?1" <br />33. 在关pL型中Qؓ了实?关系中不允许出现相同元组"的约束应使用___B___?<br />A、时关键字 B、主关键?C、外部关键字 D、烦引关键字 <br />34. Ҏ(gu)"职工"目文g生成emp_sys.exe应用E序的命令是__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. 当前盘当前目录下有数据库Q学?dbcQ其中有"教师"表和"学院"表?<br />"教师"表: <br /><br />"学院"表: <br /><br />有SQL语句Q?<br />SELECT DISTINCT pd FROM 教师 WHERE 工资>=; <br />ALL (SELECT 工资 FROM 教师 WHERE pd="02") <br />与如上语句等LSQL语句是___A___?<br />A、SELECT DISTINCT pd FROM 教师 WHERE工资>=; <br />(SELECT MAX(工资) FROM 教师 WHERE pd="02") <br />B、SELECT DISTINCT pd FROM 教师 WHERE 工资>=; <br />(SELECT MIN(工资) FROM 教师 WHERE pd="02") <br />C、SELECT DISTINCT pd FROM 教师 WHERE 工资>=; <br />ANY(SELECT 工资 FROM 教师 WHERE pd="02") <br />D、SELECT DISTINCT pd FROM 教师 WHERE 工资>=; <br />SOME (SELECT 工资 FROM 教师 WHERE pd="02") <br />二?填空?<br />36. 若按功能划分QY件测试的Ҏ(gu)通常分ؓ白盒试Ҏ(gu)和__黑盒____试Ҏ(gu)?<br />37. 数据库系l的三模式分别为_概念或概_____模式、内部模式与外部模式?<br />38. 在最坏情况下Q冒泡排序的旉复杂度ؓ__n(n-1)/2____?<br />39. 在面向对象方法中Q信息隐蔽是通过对象的___装___性来实现的?<br />40. 关系模型的数据操U即是徏立在关系上的数据操纵Q一般有__查询____、增加、删除和修改四种操作?<br />41.要把帮助文g讄为复制到盘上的Foxhelp.chm文gQ需要在"选项"对话框的__文g位置____选项卡上讄?<br />42. TIME( )的返回值的数据cd是__字符 或    C____cd?<br />43. 在定义字D|效性规则中Q在规则框中输入的表辑ּ中类型是___逻辑表达式_____?<br />44. 设计报表通常包括两部分内容:_数据源_____和布局?<br />45. __内部联接____是指只有满联接条g的记录才包含在查询结果中?<br />46. 设有图书理数据库: <br />图书(ȝ号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单h(hun)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??5元和25?之间的图书的书名、作者、书价和分类Pl果按分cd升序排序?<br />SELECT 书名,作?单h(hun),分类?FROM 图书; <br />WHERE______; <br />ORDER BY______; <br />47. 设有如下关系表R、S和TQ?<br />R(BH,XM,XB,DWH) <br />S(SWH,DWM) <br />T(BH,XM,XB,DWH) <br />实现R∪T的SQL语句是_______?<br />48. 设有如下关系表RQ?<br />R(NO,NAME,SEX,AGE,CLASS) <br />d键字是NO <br />其中NO为学PNAME为姓名,SEX为性别QAGE为年龄,CLASS为班受写出实C列功能的SQL语句?<br />插入"95031"班学号ؓ30Q姓名ؓ"郑和"的学生记录;_______?<br />49. 设有如下关系表RQ?<br />R(NO,NAME,SEX,AGE,CLASS) <br />d键字是NO <br />其中NO为学?数值型)QNAME为姓名,SEX为性别QAGE为年龄,CLASS为班受写出实C列功能的SQL语句?<br />删除学号?0的学生记录;______?<br />W二套题{案 <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.文g位置 42.字符 ?C 43.逻辑表达?<br />44.数据?45.内部联接 <br />46. 单h(hun) BETWEEN 15 AND 25 ?单h(hun) BETW 15 AND 25 ?单h(hun) BETWE 15 AND 25 ?单h(hun)>=15 and 单h(hun)<=25 ?单h(hun)>=15 and 单h(hun)=<25 ?单h(hun)=>15 and 单h(hun)<=25 ?单h(hun)=>15 and 单h(hun)=<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.tkk7.com/youngturk/aggbug/90389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/youngturk/" target="_blank">youngturk</a> 2006-12-27 22:21 <a href="http://www.tkk7.com/youngturk/archive/2006/12/27/90389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的数据库q接~程QJDBCQ技?/title><link>http://www.tkk7.com/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.tkk7.com/youngturk/archive/2006/12/27/90260.html</guid><wfw:comment>http://www.tkk7.com/youngturk/comments/90260.html</wfw:comment><comments>http://www.tkk7.com/youngturk/archive/2006/12/27/90260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/youngturk/comments/commentRss/90260.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/youngturk/services/trackbacks/90260.html</trackback:ping><description><![CDATA[[本讲的知识要点]QJDBC、JDBC的工作原理,讉K数据库的Ҏ(gu)、Statement、PreparedStatement、CallableStatementQResultSet{对象的~程使用<br /><br />9.1 基本知识<br /><br />9.1.1 JDBCQJava DataBase ConnectivityQJava 数据库连接技术)Q它是将Java与SQLl合且独立于特定的数据库pȝ的应用程序编E接口(API--它是一U可用于执行SQL语句的Java APIQ即׃l用Java语言~写的类与接口所l成Q?br /><br />  有了JDBC从而可以JavaE序员用Java语言来编写完整的数据库方面的应用E序。另外也可以操作保存在多U不同的数据库管理系l中的数据,而与数据库管理系l中数据存储格式无关。同时Java语言的与q_的无x,不必在不同的pȝq_下编写不同的数据库应用程序?<br /><br />9.1.2 JDBC设计的目?br /><br />Q?QODBCQ微软的ODBC是用C~写的,而且只适用于Windowsq_Q无法实现跨q_地操作数据库?br /><br />Q?QSQL语言QSQL管包含有数据定义、数据操作、数据管理等功能Q但它ƈ不是一个完整的~程语言Q而且不支持流控制Q需要与其它~程语言盔R合用?br /><br />Q?QJDBC的设计:׃Java语言h健壮性、安全、易使用q自动下载到|络{方面的优点Q因此如果采用Java语言来连接数据库Q将能克服ODBC局限于某一pȝq_的缺PSQL语言与Java语言怺l合hQ可以实现连接不同数据库pȝQ即使用JDBC可以很容易地把SQL语句传送到M关系型数据库中?br /><br />Q?QJDBC设计的目的:它是一U规范,设计出它的最主要的目的是让各个数据库开发商为JavaE序员提供标准的数据库访问类和接口,使得独立于DBMS的Java应用E序的开发成为可能(数据库改变,驱动E序跟着改变Q但应用E序不变Q?br /><br />9.1.3 JDBC的主要功能:Q?Q创Z数据库的q接Q(2Q发送SQL语句CQ何关pd数据库中;Q?Q处理数据ƈ查询l果?br /><br />~程实例Q?br /><br />try<br /><br />{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //Q?Q创Z数据库的q接<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");//Q?Q发送SQL语句到数据库?              <br /><br />while(rs.next())<br /><br />{ String name=rs.getString("Name") ;         //Q?Q处理数据ƈ查询l果?br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />}<br /><br />rs.close();                                           //Q?Q关?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 />Q?QODBC是用C语言~写的,不是面向对象的;而JDBC是用Java~写的,是面向对象的?br /><br />Q?QODBC难以学习Q因为它把简单的功能与高U功能组合在一P即便是简单的查询也会带有复杂的Q选项Q而JDBC的设计得简单的事情用简单的做法来完成?br /><br />Q?QODBC是局限于某一pȝq_的,而JDBC提供Java与^台无关的解决Ҏ(gu)?br /><br />Q?Q但也可以通过Java来操作ODBCQ这可以采用JDBc-ODBC桥接方式来实玎ͼ因ؓJava不能直接使用ODBCQ即在Java中用本地C的代码将带来安全~陷Q?br /><br />9.1.5 JDBC驱动E序的类? 目前比较常见的JDBC驱动E序可分Z下四个种c:<br /><br />Q?QJDBC-ODBC桥加ODBC驱动E序<br /><br />JavaSoft桥品利用ODBC驱动E序提供JDBC讉K。注意,必须ODBC二进制代码(许多情况下还包括数据库客h代码Q加载到使用该驱动程序的每个客户Z。因此,q种cd的驱动程序最适合于企业网Q这U网l上客户机的安装不是主要问题Q,或者是用Java~写的三层结构的应用E序服务器代码?br /><br />JDBC-ODBC 桥接方式利用微Y的开放数据库互连接口(ODBC API)同数据库服务器通讯Q客L计算机首先应该安装ƈ配置ODBC driver 和JDBC-ODBC bridge两种驱动E序?br /><br />Q?Q本地API<br /><br />q种cd的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动E序一Pq种cd的驱动程序要求将某些二进制代码加载到每台客户Z?br /><br />q种驱动方式数据库厂商的特D协议{换成Java代码及二q制cȝQJava 数据库客h与数据库服务器方通信。例如:Oracle用SQLNet协议,DB2用IBM 的数据库协议。数据库厂商的特D协议也应该被安装在客户Z?br /><br />Q?QJDBC|络UJava驱动E序<br /><br />q种驱动E序JDBC转换ZDBMS无关的网l协议,之后q种协议又被某个服务器{换ؓ一UDBMS协议。这U网l服务器中间件能够将它的UJava客户接到多种不同的数据库上。所用的具体协议取决于提供者。通常Q这是最为灵zȝJDBC驱动E序。有可能所有这U解x案的提供者都提供适合于Intranet用的产品。ؓ了ɘq些产品也支持Internet讉KQ它们必d理Web所提出的安全性、通过防火墙的讉K{方面的额外要求。几家提供者正JDBC驱动E序加到他们现有的数据库中间件品中?br /><br />q种方式是纯Java driver。数据库客户以标准网l协?如HTTP、SHTTP)同数据库讉K服务器通信Q数据库讉K服务器然后翻译标准网l协议成为数据库厂商的专有特D数据库讉K协议(也可能用到ODBC driver)与数据库通信。对Internet 和Intranet 用户而言q是一个理想的解决Ҏ(gu)。Java driver 被自动的Q以透明的方式随Applets自Web服务器而下载ƈ安装在用L计算Z?br /><br />Q?Q本地协议纯Java驱动E序<br /><br />q种cd的驱动程序将JDBC调用直接转换为DBMS所使用的网l协议。这允总客户机机器上直接调用DBMS服务器,是Intranet讉K的一个很实用的解x法?br /><br />q种方式也是UJava driver。数据库厂商提供了特D的JDBC协议使Java数据库客户与数据库服务器通信。然而,把代理协议同数据库服务器通信改用数据库厂商的Ҏ(gu)JDBC driver。这对Intranet 应用是高效的Q可是数据库厂商的协议可能不被防火墙支持Q缺乏防火墙支持在Internet 应用中会存在潜在的安全隐(zhn)?br /><br />9.2 JDBC的工作原?br /><br />  JDBC的设计基于X/Open SQL CLIQ调用接口Q这一模型。它通过定义Zl?API对象和方法以用于同数据库q行交互?br /><br /><br /><br />在JavaE序中要操作数据库,一般应该通过如下几步Q利用JDBC讉K数据库的~程步骤Q:<br /><br />Q?Q加载连接数据库的驱动程?Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />Q?Q创Z数据源的q接<br /><br />String url="jdbc:odbc:DatabaseDSN"; <br /><br />Connection con=DriverManager.getConnection(url,"Login","Password");<br /><br />Q?Q查询数据库Q创建Statement对象q执行SQL语句以返回一个ResultSet对象?br /><br />Statement stmt=con.createStatement();<br /><br />ResultSet rs=stmt.executeQuery("select * from DBTableName"); <br /><br />Q?Q获得当前记录集中的某一记录的各个字D늚?br /><br />  String name=rs.getString("Name");<br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />Q?Q关闭查询语句及与数据库的连接(注意关闭的顺序先rs再stmt最后ؓconQ?br /><br />  rs.close();   <br /><br />  stmt.close();<br /><br />  con.close(); <br /><br />9.3 JDBC的结?br /><br />  JDBC主要包含两部分:面向JavaE序员的JDBC API及面向数据库厂商的JDBC Drive API?br /><br />Q?Q面向JavaE序员的JDBC APIQJavaE序员通过调用此API从而实现连接数据库、执行SQL语句q返回结果集{编E数据库的能力,它主要是׃pd的接口定义所构成?br /><br />java.sql.DriveManagerQ该接口主要定义了用来处理装载驱动程序ƈ且ؓ创徏新的数据库连接提供支持?br /><br />java.sql.ConnectionQ该接口主要定义了实现对某一U指定数据库q接的功能?br /><br />java.sql.StatementQ该接口主要定义了在一个给定的q接中作为SQL语句执行声明的容器以实现Ҏ(gu)据库的操作。它主要包含有如下的两种子类型?br /><br />  java.sql.PreparedStatementQ该接口主要定义了用于执行带或不?IN 参数的预~译 SQL 语句?br /><br />  java.sql.CallableStatementQ该接口主要定义了用于执行数据库的存储过E的雕用?br /><br />java.sql.ResultSetQ该接口主要定义了用于执行对数据库的操作所q回的结果集?br /><br />Q?Q面向数据库厂商的JDBC Drive APIQ数据库厂商必须提供相应的驱动程序ƈ实现JDBC API所要求的基本接口(每个数据库系l厂商必L供对DriveManager、Connection、Statement、ResultSet{接口的具体实现Q,从而最l保证JavaE序员通过JDBC实现对不同的数据库操作?br /><br />9.4 数据库应用的模型<br /><br />Q?Q两层结构(C/SQ:在此模型下,客户端的E序直接与数据库服务器相q接q发送SQL语句Q但q时需要在客户端安装被讉K的数据库的JDBC驱动E序Q,DBMS服务器向客户q回相应的结果,客户E序负责Ҏ(gu)据的格式化?br /><br />client?      ODBC/JDBC         Server端(DBMSQ?br /><br />或数据库专用协议   <br /><br /><br /><br /><br /><br />主要的缺点:受数据库厂商的限Ӟ用户更换数据库时需要改写客L序;受数据库版本的限Ӟ数据库厂商一旦升U数据库Q用该数据库的客户E序需要重新编译和发布Q对数据库的操作与处理都是在客户E序中实玎ͼ使客L序在~程与设计时较ؓ复杂?br /><br /><br /><br />Q?Q三Q或多)层结构(B/SQ:在此模型下,主要在客L的程序与数据库服务器之间增加了一个中间服务器Q可以采用C++或Java语言来编E实玎ͼQ隔dL的程序与数据库服务器。客L的程序(可以单ؓ通用的浏览器Q与中间服务器进行通信Q然后由中间服务器处理客LE序的请求ƈ理与数据库服务器的q接?br /><br /><br /><br />客户端程?HTTP RMI CORBA 中间服务?  JDBC   数据库服务器<br /><br /><br /><br /><br /><br />9.5 通过JDBC 实现Ҏ(gu)据库的访?br /><br />Q?Q引用必要的?br /><br />import java.sql.*; //它包含有操作数据库的各个cM接口   <br /><br />Q?Q加载连接数据库的驱动程序类   <br /><br />  为实C特定的数据库相连接,JDBC必须加蝲相应的驱动程序类。这通常可以采用Class.forName()Ҏ(gu)昑ּ地加载一个驱动程序类Q由驱动E序负责向DriverManager登记注册q在与数据库相连接时QDriverManager用此驱动E序?br /><br />    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");<br /><br />注意Q这条语句直接加载了sun公司提供的JDBC-ODBC Bridge驱动E序cR?br /><br />Q?Q创Z数据源的q接<br /><br />String url="jdbc:odbc:DatabaseDSN"; <br /><br />Connection con=DriverManager.getConnection(url,"Login","Password");<br /><br />注意Q采用DriverManagercM的getConnection()Ҏ(gu)实现与url所指定的数据源建立q接q返回一个Connectioncȝ对象Q以后对q个数据源的操作都是Z该Connectioncd象;但对于Access{小型数据库Q可以不用给出用户名与密码?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语法来确定全球的数据库(数据库URLcM于通用的URLQ,对由url所指定的数据源的表C格式ؓ<br /><br />  jdbc::[ database locator]<br /><br />jdbc---指出要用JDBC<br /><br />subprotocal---定义驱动E序cd<br /><br />database locator---提供|络数据库的位置和端口号(包括L名、端口和数据库系l名{?   jdbc:odbc://host.domain.com:port/databasefile   <br /><br />d议jdbc   驱动E序cd为odbcQ它指明JDBC理器如何访问数据库Q该例指名ؓ采用JDBC-ODBC桥接方式Q其它ؓ数据库的位置表示?  <br /><br />例如Q装载mySQL JDBC驱动E序<br /><br />Class.forName("org.gjt.mm.mysql.Driver ");<br /><br />String url <br /><br />="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" <br />  //testDBZ的数据库?<br />  Connection conn= DriverManager.getConnection(url);<br /><br />例如Q装载Oracle JDBC OCI驱动E序Q用thin模式Q?br /><br />Class.forName("oracle.jdbc.driver.OracleDriver ");<br /><br />String url="jdbc:oracle:thin:@localhost:1521:orcl"; <br />  //orclZ的数据库的SID <br />  String user="scott"; <br />  String password="tiger"; <br />  Connection conn= DriverManager.getConnection(url,user,password);<br /><br />注意Q也可以通过con.setCatalog("MyDatabase")来加载数据库?br /><br />例如Q装载DB2驱动E序<br /><br />Class.forName("com.ibm.db2.jdbc.app.DB2Driver ")<br /><br />String url="jdbc:db2://localhost:5000/sample"; <br />  //sampleZ的数据库?<br />  String user="admin"; <br />  String password=""; <br />  Connection conn= DriverManager.getConnection(url,user,password); <br /><br /><br /><br />例如Q装载MicroSoft SQLServer驱动E序<br /><br />Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver ");<br /><br />String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; <br />  //pubsZ的数据库?<br />  String user="sa"; <br />  String password="";   <br />  Connection conn= DriverManager.getConnection(url,user,password);<br /><br />Q?Q查询数据库的一些结构信?br /><br />  q主要是获得数据库中的各个表Q各个列及数据类型和存储q程{各斚w的信息。根据这些信息,从而可以访问一个未知结构的数据库。这主要是通过DatabaseMetaDatacȝ对象来实现ƈ调用其中的方法来获得数据库的详细信息Q即数据库的基本信息Q数据库中的各个表的情况Q表中的各个列的信息及烦引方面的信息Q?br /><br />  DatabaseMetaData dbms=con.getMetaData();<br /><br />  System.out.println("数据库的驱动E序?"+dbms.getDriverName());<br /><br />Q?Q查询数据库中的数据Q?br /><br />  在JDBC中查询数据库中的数据的执行方法可以分ZU类型,分别对应Statement Q用于执行不带参数的单SQL语句字符ԌQPreparedStatementQ预~译SQL语句Q和CallableStatementQ主要用于执行存储过E)三个接口?br /><br />9.5.1、实现对数据库的一般查询Statement<br /><br />1、创建Statement对象Q要x行一个SQL查询语句Q必首先创建出Statement对象Q它?yu)装代表要执行的SQL语句Qƈ执行SQL语句以返回一个ResultSet对象Q这可以通过ConnectioncM的createStatement()Ҏ(gu)来实现?br /><br />  Statement stmt=con.createStatement();<br /><br />2、执行一个SQL查询语句Q以查询数据库中的数据。Statement接口提供了三U执行SQL语句的方法:executeQuery()、executeUpdate() 和execute()。具体用哪一个方法由SQL语句本n来决定?br /><br />l     Ҏ(gu) executeQuery 用于产生单个l果集的语句Q例?SELECT 语句{?br /><br />l     Ҏ(gu) executeUpdate 用于执行INSERT、UPDATE或DELETE 语句以及SQL DDLQ数据定义语aQ语句,例如 CREATE TABLE ?DROP TABLE。INSERT、UPDATE 或DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整敎ͼ指示受媄响的行数Q即更新计数Q。对?CREATE TABLE 或DROP TABLE {不操作行的语句QexecuteUpdate 的返回值Mؓ零?br /><br />l       Ҏ(gu) execute 用于执行q回多个l果集、多个更新计数或二者组合的语句。一般不会需要该高功能?br /><br />下面l出通过StatementcM的executeQuery()Ҏ(gu)来实现的代码DcexecuteQuery()Ҏ(gu)的输入参数是一个标准的SQL查询语句Q其q回值是一个ResultSetcȝ对象?<br /><br />ResultSet rs=stmt. executeQuery ("select * from DBTableName");       <br />要点Q①JDBC在编译时q不对将要执行的SQL查询语句作Q何检查,只是其作ؓ一个Stringcd象,直到驱动E序执行SQL查询语句时才知道其是否正。对于错误的SQL查询语句Q在执行时将会?SQLException?br /><br />    ②一个Statement对象在同一旉只能打开一个结果集Q对W二个结果集的打开隐含着对第一个结果集的关闭?br /><br />    ③如果想对多个结果集同时操作Q必d建出多个Statement对象Q在每个Statement对象上执行SQL查询语句以获得相应的l果集?br /><br />    ④如果不需要同时处理多个结果集Q则可以在一个Statement对象上顺序执行多个SQL查询语句Q对获得的结果集q行序操作?<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 />注意Q?br /><br />此时昄出的是姓名q是q龄Q(显C的是rs2的结果集的内容,卛_生的q龄Q因为采用JDBC-ODBC方式的驱动程序时Qƈ且是采用同一个Statement对象Q它只会保留最新的l果集,rs1中的内容会被新的结果集所取代Q?br /><br />3?关闭Statement对象Q每一个Statement对象在用完毕后Q都应该关闭?br /><br />  stmt.close(); <br /><br />9.5.2、预~译方式执行SQL语句PreparedStatement<br /><br />  ׃Statement对象在每ơ执行SQL语句旉该语句传给数据库,如果需要多ơ执行同一条SQL语句Ӟq样导致执行效率特别低Q此时可以采用PreparedStatement对象来封装SQL语句。如果数据库支持预编译,它可以将SQL语句传给数据库作预编译,以后每次执行该SQL语句Ӟ可以提高讉K速度Q但如果数据库不支持预编译,在语句执行时才传给数据库,其效果类同于Statement对象?br /><br />  另外PreparedStatement对象的SQL语句q可以接收参敎ͼ可以用不同的输入参数来多ơ执行编译过的语句,较Statement灉|方便Q详见后文介l)?br /><br />1?创徏PreparedStatement对象Q从一个Connection对象上可以创Z个PreparedStatement对象Q在创徏时可以给出预~译的SQL语句?br /><br />  PreparedStatement pstmt=con.prepareStatement("select * from DBTableName");<br /><br />2?执行SQL语句Q可以调用executeQuery()来实玎ͼ但与Statement方式不同的是Q它没有参数Q因为在创徏PreparedStatement对象时已l给Z要执行的SQL语句Q系lƈq行了预~译?br /><br />  ResultSet rs=pstmt.executeQuery(); // 该条语句可以被多ơ执?<br /><br />3、关闭PreparedStatement<br /><br />  pstmt.close(); //其实是调用了父类StatementcM的close()Ҏ(gu) <br /><br />9.5.3、执行存储过ECallableStatement<br /><br />  CallableStatementcLPreparedStatementcȝ子类Q因此可以用在PreparedStatementcdStatementcM的方法,主要用于执行存储q程?br /><br />1?创徏CallableStatement对象Q用ConnectioncM的prepareCallҎ(gu)可以创徏一个CallableStatement对象Q其参数是一个String对象Q一般格式ؓQ?br /><br />l       不带输入参数的存储过E“{call 存储q程?)}”?br /><br />l     带输入参数的存储q程“{call存储q程??, ?)}?br /><br />l       带输入参数ƈ有返回结果参数的存储q程“{? = call 存储q程??, ?, ...)}?br /><br />  CallableStatement cstmt=con.prepareCall("{call Query1()}");<br /><br />2?执行存储q程Q可以调用executeQuery()Ҏ(gu)来实现?br /><br />  ResultSet rs=cstmt.executeQuery();   <br /><br />3、关闭CallableStatement<br /><br />  cstmt.close(); //其实是调用了父类StatementcM的close()Ҏ(gu) <br /><br />Q?Q检索记录集以获得当前记录集中的某一记录的各个字D늚?br /><br />9.5.4、ResultSet对象Q?br /><br />  ?执行完毕SQL语句后,返回一个ResultSetcȝ对象Q它包含所有的查询l果。但对ResultSetcȝ对象方式依赖于光标(CursorQ的cdQ而对每一行中的各个列Q可以按M序q行处理Q当Ӟ如果按从左到右的序对各列进行处理可以获得较高的执行效率Q;<br /><br />ResultSetcM的Course方式主要有:<br /><br />ResultSet.TYPE_FORWARD_ONLYQؓ~省讄Q:光标只能前进不能后退Q也是只能从第一个一直移动到最后一个?br /><br />ResultSet.TYPE_SCROLL_SENSITIVEQ允许光标前q或后退q感应到其它ResultSet的光标的Ud情Ş?br /><br />ResultSet.TYPE_SCROLL_INSENSITIVEQ允许光标前q或后退q不能感应到其它ResultSet的光标的Ud情Ş?br /><br />ResultSetcM的数据是否允怿改主要有Q?br /><br />ResultSet.CONCUR_READ_ONLYQؓ~省讄Q:表示数据只能只读Q不能更攏V?br /><br />ResultSet.CONCUR_UPDATABLEQ表C数据允许被修改?br /><br />  可以在创建Statement或PreparedStatement对象时指定ResultSet的这两个Ҏ(gu)?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 />?ResultSetcȝ对象l持一个指向当前行的指针,利用ResultSetcȝnext()Ҏ(gu)可以UdC一行(在JDBC中,JavaE序一ơ只能看C行数据)Q如果next()的返回gؓfalseQ则说明已到记录集的N。另外JDBC也没有类似ODBC 的书{֊能的Ҏ(gu)?br /><br />  ?利用ResultSetcȝgetXXX()Ҏ(gu)可以获得某一列的l果Q其中XXX代表JDBC中的Java数据cdQ如 getInt()、getString()、getDate(){。访问时需要指定要索的列(可以采用 intg为列P?开始计敎ͼ或指定列Q字D)名方式,但字D名不区别字母的大小写)?br /><br />while(rs.next())<br /><br />{ String name=rs.getString("Name"); //采用“列名”的方式讉K数据<br /><br />  int age=rs.getInt("age");<br /><br />  float wage=rs.getFloat("wage");<br /><br />  String homeAddress=rs.getString(4); //采用“列号”的方式讉K数据<br /><br />}<br /><br />9.5.5、数据{?br /><br />  利用ResultSetcȝgetXXX()Ҏ(gu)可以实现ResultSet中的SQL数据cd转换为它所q回的Java数据cd?br /><br />9.5.6、NULLl果?br /><br />  要确定给定结果值是否是JDBC NULLQ必dd该列Q然后用ResultSet.wasNull<br /><br />Ҏ(gu)查该ơ读取是否返回JDBC NULL?br /><br />  当用ResultSet.getXXXҎ(gu)dJDBC NULLӞҎ(gu)wasNull返回下列g一Q?br /><br />Q?QJavanull?br /><br />  对于q回Java对象的getXXXҎ(gu)Q例如getString、getBigDecimal、getBytes、getDate、getTime、getTimestamp、getAsciiStream、getUnicodeStream、getBinaryStream、getObject{)?br /><br />Q?Q零|对于getByte、getShort、getInt、getLong、getFloat和getDouble?br /><br />Q?Qfalse|对于getBoolean<br /><br />9.5.6、获得结果集中的l构信息Q利用ResultSetcȝgetMetaData()Ҏ(gu)来获得结果集中的一些结构信息(主要提供用来描述列的数量、列的名U、列的数据类型。利用ResulSetMetaDatacM的方法)?br /><br />ResultsetMetaData rsmd=rs.getMetaData();<br /><br />rsmd.getColumnCount();   //q回l果集中的列?        <br /><br />rsmd.getColumnLabel(1); //q回W一列的列名Q字D名Q?br /><br />例如Q?br /><br />Statement stmt=con.createStatement();<br /><br />ResultSet rs=stmt.executeQuery("select * from TableName");<br /><br />for(int i=1; i<=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<=rs.getMetaData().getColumnCount(); j++)<br /><br />    {     System.out.print(rs.getObject(j)+"\t");<br /><br />    }<br /><br />}<br /><br />9.6、更新数据库<br /><br />  前面主要介绍如何实现Ҏ(gu)据库的查询操作,但在许多应用中需要实现对数据库的更新Q这主要涉及修改、插入和删除{(即SQL语句中的Insert、Update、Delete、Creat、Drap{)。仍焉过创徏Statement对象来实玎ͼ但不再调用executeQuery()Ҏ(gu)Q而是使用executeUpdate()Ҏ(gu)?br /><br />要点FQ正区分StatementcM的executeQuery()、execute()和executeUpdate()Ҏ(gu)的用法:Q?Q?br /><br />executeQuery() 执行一般的SQL查询语句Q即SELECT语句Qƈq回Resultset对象Q(2Qexecute()可以执行各种SQL查询语句Qƈ可能q回多个l果集(q一般主要发生在执行了返回多个结果集的存储过E时Q,此时可以采用ResultsetcȝgetResultSet()来获得当前的l果集;Q?QexecuteUpdate()执行Ҏ(gu)据库的更新的SQL语句或DDL语句?br /><br />9.6.1 对表中的记录q行操作<br /><br />  对一个表中的记录可以q行修改、插入和删除{操作,分别对应SQL的Update?Insert、Delete操作QexecuteUpdate()Ҏ(gu)的输入参C然ؓ一个String对象Q即所要执行的SQL语句Q,但输出参C是ResultSet对象Q而是一个整敎ͼ它代表操作所影响的记录行敎ͼ?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')"); //未给出的列,其gؓNULL<br /><br /><br /><br />E序实例Q对数据库中的表q行更新操作q显C操作前后的l果<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()Ҏ(gu)来完成?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 />对一个表的列q行更新操作主要是用SQL的ALTER Table语句。对列所q行的更新操作会影响到表中的所有的行?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查询语句一PҎ(gu)据更新语句时也可以在PreparedStatement对象上执行。用PreparedStatement对象Q只需传递一ơSQL语句Q可以多ơ执行它Qƈ且可以利用数据库的预~译技术,提高执行效率。另外也可以接受参数?br /><br />  PreparedStatement pstmt=con.prepareStatement("Update TableName set Address='Beijing,China' where ID >1");<br /><br />  pstmt.executeUpdate();<br /><br />9.7 参数的输入与输出<br /><br />  要实C用SQL语句的输入与输出参数Q必dPreparedStatementcȝ对象上进行操作;同时׃CallableStatementcLPrepareStatementcȝ子类Q所以在CallableStatemen对象上的操作也可以用输入与输出参数Q其主要的编E原理是在生成CallableStatement或PreparedStatementcȝ对象Ӟ可以在SQL语句中指定输入或输出参数Q在执行q个SQL语句之前Q要对输入参数进行赋倹{?br /><br />Q?Q用PreparedStatementcȝ对象<br /><br />  通过prepareStatementcȝ对象可以实现在查询语句与数据更新语句斚w都可以设|输入参数?br /><br />  具体的方法是在SQL语句中用“?”标明参敎ͼ在执行SQL语句之前Q用setXXXҎ(gu)l参数赋|然后使用executeQuery()或executeUpdate()来执行这个SQL语句。每ơ执行SQL语句之前Q可以给参数重新赋倹{?br /><br />  setXXXҎ(gu)用于l相应的输入参数q行赋|其中XXX是JDBC的数据类型,如:Int、String{。setXXXҎ(gu)有两个参敎ͼW一个是要赋值的参数在SQL语句中的位置Q?SQL语句中的W一个参数的位置?Q第二个参数的位|ؓ2QsetXXXҎ(gu)的第二个参数是要传递的|?00、“Peking”等Q随XXX的不同而ؓ不同的类型?br /><br />  PreparedStatement pstmt=con.prepareStatement("Update TableName set Name=? where ID=?");<br /><br />  pstmt.setString(1,"zhang Hua"); //讄W一个参敎ͼNameQؓ “zhang Hua?br /><br />  for(int i=1;i<3;i++)<br /><br />  { pstmt.setInt(2,i); //讄W二个参敎ͼIDQؓ 1,2<br /><br />    pstmt.executeUpdate();<br /><br />  }<br /><br />要点Q最l实?Update TableName set Name=zhang Hua where ID=1 与Update TableName set Name=zhang Hua where ID=2的效果?br /><br />Q?Q用CallableStatement对象<br /><br />  如果要求调用数据库的存储q程Q要使用CallableStatement对象。另外还有些存储q程要求用户输入参数Q这可以在生成CallableStatement对象的存储过E调用语句中讄输入参数。在执行q个存储q程之前使用setXXXҎ(gu)l参数赋|然后再执行这个存储过E?br /><br />  CallableStatement cstmt=con.prepareCall("{call Query(?)}"); //Query为存储过E名<br /><br />  cstmt.setString(1,"输入参数"); //为存储过E提供输入参?br /><br />  ResultSet rs=cstmt.executeQuery();<br /><br />Q?Q接收输出参?br /><br />  某些存储q程可能会返回输出参敎ͼq时在执行这个存储过E之前,必须使用CallableStatement的registerOutParameterҎ(gu)首先登记输出参数Q在registerOutParameterҎ(gu)中要l出输出参数的相应位|以及输出参数的SQL数据cd。在执行完存储过E以后,必须使用getXXXҎ(gu)来获得输出参数的倹{ƈ在getXXXҎ(gu)中要指出获得哪一个输出参敎ͼ通过序号来指定)的倹{?br /><br />实例Q存储过EgetTestData有三个输入参数ƈq回一个输出参敎ͼcd分别为VARCHAR。在执行完毕后,分别使用getString()Ҏ(gu)来获得相应的倹{?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();         //执行存储q程<br /><br />rs.getString(1);                                 //获得W一个字D늚?br /><br />String returnResult=cstmt.getString(1);               //获得q回的输出参数的?br /><br />要点Q由于getXXXҎ(gu)不对数据cd作Q何{换,在registerOutParameterҎ(gu)中指明数据库返回的SQL数据cdQ在执行完存储过E以后必采用相应匹配的getXXXҎ(gu)来获得输出参数的倹{?br /><br /><br /><br />9.8 扚w处理JDBC语句提高处理速度<br /><br /><br /><br />有时候JDBCq行得不够快Q这可以使用数据库相关的存储q程。当Ӟ作ؓ存储q程的一个替代方案,可以试试使用Statement 的批量处理特性以提高速度?<br /><br /><br /><br />  存储q程的最单的形式是包含一pdSQL语句的过E,这些语句放在一起便于在同一个地方管理也可以提高速度。Statement cd以包含一pdSQL语句Q因此允许在同一个数据库事务执行所有的那些语句而不是执行对数据库的一pd调用?<br /><br />  使用扚w处理功能涉及下面的两个方法: <br /><br />  addBatch(String) Ҏ(gu) <br /><br />  executeBatchҎ(gu) <br /><br />  如果你正在用Statement 那么addBatch Ҏ(gu)可以接受一个通常的SQL语句Q或者如果你在用PreparedStatement Q那么也可以什么都不向它增加?<br /><br />executeBatch Ҏ(gu)执行那些SQL语句q返回一个int值的数组Q这个数l包含每个语句媄响的数据的行数?br /><br />注意Q如果将一个SELECT语句或者其他返回一个ResultSet的SQL语句攑օ扚w处理中就会导致一个SQLException异常?<br /><br />  关于java.sql.Statement 的简单范例可以是Q?<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 有些不同Q它只能处理一部分SQL语法Q但是可以有很多参数Q因此重写上面的范例的一部分可以得C面的l果Q?<br /><br /> // 注意q里没有删除语句<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 />如果你不知道你的语句要运行多次Q那么这是一个很好的处理SQL代码的方法。在不用批量处理的情况下,如果d50个用P那么性能有影响Q如果某个h写了一个脚本添加一万个用户Q程序可能变得很p糕。添加批处理功能可以帮助提高性能Q而且在后面的那种情况下代码的可读性也会更好?br /></i></i></i></i><img src ="http://www.tkk7.com/youngturk/aggbug/90260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/youngturk/" target="_blank">youngturk</a> 2006-12-27 11:40 <a href="http://www.tkk7.com/youngturk/archive/2006/12/27/90260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://szwangzhongwang.com" target="_blank">vavava</a>| <a href="http://huakangweicai.com" target="_blank">պɫƵһ</a>| <a href="http://juguanghr.com" target="_blank">þù޾ƷӰԺ</a>| <a href="http://fjwkjx.com" target="_blank">ҹ׾糡</a>| <a href="http://ittenyear.com" target="_blank">ŷרһ</a>| <a href="http://0415ss.com" target="_blank">˳ɵӰվɫwww</a>| <a href="http://webgame86.com" target="_blank">Ļ߹ۿ</a>| <a href="http://rj150.com" target="_blank">ˬˬһ</a>| <a href="http://zzttt04.com" target="_blank">޹˾þһҳ</a>| <a href="http://paweax.com" target="_blank">ձ</a>| <a href="http://600c63.com" target="_blank">91ֻƬ</a>| <a href="http://140699.com" target="_blank">պaƵ</a>| <a href="http://wwwtoutoulu.com" target="_blank">˳վ߹ۿ</a>| <a href="http://spxingyiquan.com" target="_blank">ɫWW47</a>| <a href="http://zp0533.com" target="_blank">쿴</a>| <a href="http://ww99w.com" target="_blank">޹ƷȾþ</a>| <a href="http://yy9977.com" target="_blank">޹ۺ</a>| <a href="http://gujingyuye.com" target="_blank">޲߹ۿ</a>| <a href="http://ydysmedia.com" target="_blank">޾Ʒ߳ˮAƬ</a>| <a href="http://222mp3.com" target="_blank">Ʒ޵һ </a>| <a href="http://01shanzhai.com" target="_blank">ձvƬһ</a>| <a href="http://yeyaweiban.com" target="_blank">պһëƬ</a>| <a href="http://www48646.com" target="_blank">ղƷaëƬþ</a>| <a href="http://fdsyjy.com" target="_blank">ëƬѹۿƵȫ</a>| <a href="http://mallmirror.com" target="_blank">ˬִ̼߳</a>| <a href="http://hljc988.com" target="_blank">ȫ»ɫؼվ</a>| <a href="http://ahsuibao.com" target="_blank">ëƬaëƬѹۿ</a>| <a href="http://www52a.com" target="_blank">ѻɫһëƬ</a>| <a href="http://zp0533.com" target="_blank">99ƷƵ߹ۿƬһһ </a>| <a href="http://52xbjs.com" target="_blank">ѾƷԲ߲</a>| <a href="http://yyfass.com" target="_blank">ػһһƬ</a>| <a href="http://q2c6.com" target="_blank">AVһɫ</a>| <a href="http://3baimm.com" target="_blank">Ʒۺ</a>| <a href="http://szclinic.com" target="_blank">97Ƶ</a>| <a href="http://7778tv.com" target="_blank">VƬ߹ۿ</a>| <a href="http://fenxue520.com" target="_blank">ëƬ߹ۿ</a>| <a href="http://c7372.com" target="_blank">Ƶ߹ۿ</a>| <a href="http://zhongxueping888.com" target="_blank">9i9ƷѾþ</a>| <a href="http://gttest5.com" target="_blank">AVѿ</a>| <a href="http://avyjj.com" target="_blank">ĻȫƵ</a>| <a href="http://www66913.com" target="_blank">²߾ƷƵѹۿ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>