個人檔案shieldy's pool相片部落格清單更多 ![]() | 說明 |
|
|
2009/9/24 eight queen problem using ABAP, N queen problem, BY_NONRECURSIVE*&---------------------------------------------------------------------*
*& Report Z_N_QUEEN_BY_NONRECURSIVE *& *&---------------------------------------------------------------------* *& FINISHED BY SEIVIN ZHANG AT 2009-09-24 *& *&---------------------------------------------------------------------* REPORT Z_N_QUEEN_BY_NONRECURSIVE.
*** for show in the statusbar when processing CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING TEXT = 'The report is processing the queen problem, please wait for the result.'. DATA: BEGIN OF ROW ,
VAL TYPE I, END OF ROW . DATA: I_COLUM LIKE ROW OCCURS 0 WITH HEADER LINE . "COLUM OF THE COLISSION DATA: I_LEFT LIKE ROW OCCURS 0 WITH HEADER LINE . "LEFT DIAGONAL OF THE COLISSION DATA: I_RIGHT LIKE ROW OCCURS 0 WITH HEADER LINE . "RIGHT DIAGONAL OF THE COLISSION DATA: I_COLLISION TYPE I." if I_COLLISION = 0, means no collision, else means collision. DATA:BEGIN OF queen, row TYPE I VALUE '0', END OF queen. DATA: I_QUEEN LIKE QUEEN OCCURS 0 WITH HEADER LINE." QUEEN FOR PRINT. DATA: OK_TIMES TYPE I VALUE '0'.
******GET THE COUNT OF THE QUEEN
SELECTION-SCREEN COMMENT /12(30) remark. PARAMETERS: count TYPE I DEFAULT '8'. INITIALIZATION. remark = 'Please enter the count of queens'. count = '8'. ******PROCESS THE QUEEN PROBLEM
START-OF-SELECTION. WRITE: /,'N QUEEN PROBLEM',/. IF COUNT > '0' AND COUNT < '20'." IF THE COUNT OF QUEEN IS MORE THAN 20, THE TIME MAYBE UNTOTERANBLE. WRITE: /, COUNT,/. PERFORM MAIN_PROCESS USING COUNT. ELSE. WRITE: /, 'WRONG COUNT'. ENDIF. ****THE MAIN PROCESS FUNCITON
FORM MAIN_PROCESS USING I_NUM. "write: /,'From date:', SY-DATUM, 'time:', SY-UZEIT, /. ************INITIALIZATION********************** "initial the queen array DO I_NUM TIMES . I_QUEEN-ROW = -1 . APPEND I_QUEEN . ENDDO. "initial the colum and left ,right diagonal "1-NUM DO I_NUM TIMES . I_COLUM-VAL = 0 . APPEND I_COLUM . ENDDO. "ROW-COLUM+NUM(1-2*NUM) DO I_NUM * 2 TIMES . I_LEFT-VAL = 0 . APPEND I_LEFT . ENDDO. "ROW+COLUM(1-2*NUM) DO I_NUM * 2 TIMES . I_RIGHT-VAL = 0 . APPEND I_RIGHT . ENDDO. ********END OF INITIALZATION******************* " OUTPUT THE COLUM FORMATE. DATA I_OUT TYPE I. I_OUT = 1. WRITE: ' |'. DO COUNT TIMES. WRITE (2) I_OUT. I_OUT = I_OUT + 1. ENDDO. WRITE: /. " END OF THE OUTPUT FORMATE. " CALL CORE THE PROCESSING
PERFORM PROCESS_QUEEN. " OUTPUT THE TOTAL OF SOLUTIONL.
WRITE: /, 'There are ',OK_TIMES, 'in all for the solution of ', COUNT,' queen problem'. "write: /, 'To date:', SY-DATUM, 'time:', SY-UZEIT, /. ENDFORM. " END OF THE MAIN PROCESS
****the core queen process****
****I_COUNT MEANS PROCESSING THE I_COUNT ROW. FORM PROCESS_QUEEN . DATA: I_COUNT TYPE I," THE ROW FLAG J_COUNT TYPE I," THE COLUM FLAG K_COUNT TYPE I." THE TEMP COLUM FLAG I_COUNT = 1. J_COUNT = 0. WHILE I_COUNT <= COUNT.
READ TABLE I_QUEEN INDEX I_COUNT. J_COUNT = 0. IF I_QUEEN-ROW > 0 AND I_QUEEN-ROW <= COUNT. J_COUNT = I_QUEEN-ROW. PERFORM SET_QUEEN USING I_COUNT -1. PERFORM SET_COLLISION USING I_COUNT J_COUNT 0. ENDIF. K_COUNT = J_COUNT + 1.
WHILE K_COUNT <= COUNT. PERFORM COLLISION USING I_COUNT K_COUNT. IF I_COLLISION = 0. PERFORM SET_COLLISION USING I_COUNT K_COUNT 1. PERFORM SET_QUEEN USING I_COUNT K_COUNT. IF I_COUNT = COUNT.
PERFORM PRINT_QUEEN. PERFORM SET_COLLISION USING I_COUNT K_COUNT 0. PERFORM SET_QUEEN USING I_COUNT -1. ELSE. EXIT. ENDIF. ENDIF. K_COUNT = K_COUNT + 1. ENDWHILE. " THE lookback IF K_COUNT = COUNT + 1. PERFORM SET_QUEEN USING I_COUNT -1. I_COUNT = I_COUNT - 2. ENDIF. " THE EXIT OF THE WHOLE IF I_COUNT < 0. EXIT. ENDIF. " NEXT ROW.
I_COUNT = I_COUNT + 1. ENDWHILE.
ENDFORM. " END OF THE CORE PROCESS " SET THE POSITION OF THE QUEEN
FORM SET_QUEEN USING I_COUNT J_COUNT. READ TABLE I_QUEEN INDEX I_COUNT. I_QUEEN-ROW = J_COUNT. MODIFY I_QUEEN INDEX I_COUNT. ENDFORM. " END OF THE SET POSITION "CHECK WHERE THE POSITION(I,J) HAVE COLLISION.
FORM COLLISION USING I_COUNT J_COUNT. READ TABLE I_COLUM INDEX J_COUNT . READ TABLE I_LEFT INDEX I_COUNT - J_COUNT + COUNT. READ TABLE I_RIGHT INDEX I_COUNT + J_COUNT . " IF ALL THE POSTION IS NOT COLISSION WITH OTHERS, THEN CHANGE THE STATUS OF THE POSTION, AND CALL THE PROCESS_QUEEN FOR THE NEXT ROW PROCESSING. IF I_COLUM-VAL = 0 AND I_LEFT-VAL = 0 AND I_RIGHT-VAL = 0. I_COLLISION = 0. ELSE. I_COLLISION = 1. ENDIF. ENDFORM. " END OF THE CHECK COLLISION
" SET THE POSITION(I,J) WITH I_COLLI.
FORM SET_COLLISION USING I_COUNT1 J_COUNT1 I_COLLI1. IF I_COLLI1 = 0. " SET ALL THE RELATE (I,J) POSITION WITH COLLISION FALSE READ TABLE I_COLUM INDEX J_COUNT1 . READ TABLE I_LEFT INDEX I_COUNT1 - J_COUNT1 + COUNT. READ TABLE I_RIGHT INDEX J_COUNT1 + I_COUNT1 . I_COLUM-VAL = 0 . MODIFY I_COLUM INDEX J_COUNT1 . I_LEFT-VAL = 0. MODIFY I_LEFT INDEX I_COUNT1 - J_COUNT1 + COUNT . I_RIGHT-VAL = 0. MODIFY I_RIGHT INDEX J_COUNT1 + I_COUNT1 . ELSE. " SET ALL THE RELATE (I,J) POSITION WITH COLLISION TRUE READ TABLE I_COLUM INDEX J_COUNT1 . READ TABLE I_LEFT INDEX I_COUNT1 - J_COUNT1 + COUNT. READ TABLE I_RIGHT INDEX J_COUNT1 + I_COUNT1 . I_COLUM-VAL = 1 . MODIFY I_COLUM INDEX J_COUNT1 . I_LEFT-VAL = 1. MODIFY I_LEFT INDEX I_COUNT1 - J_COUNT1 + COUNT . I_RIGHT-VAL = 1. MODIFY I_RIGHT INDEX J_COUNT1 + I_COUNT1 . ENDIF. ENDFORM. " END OF THE SET COLLISION
****the print FORM of the queen******
FORM PRINT_QUEEN. OK_TIMES = OK_TIMES + 1. DATA i_index type i. i_index = 1." ROW INDEX LOOP AT I_QUEEN . Data i_qu type i. i_qu = 1. WRITE: (2) i_index. " OUTPUT THE ROW NUM WHILE i_qu < I_QUEEN-ROW. " OUTPUT THE BLANK BEFORE THE QUEEN
WRITE: '_ '. i_qu = i_qu + 1. ENDWHILE. WRITE: '* '. " THE QUEEN POSITION
WHILE i_qu < COUNT." OUTPUT THE BLANK AFTER THE QUEEN
WRITE: '_ '. i_qu = i_qu + 1. ENDWHILE. WRITE /. i_index = i_index + 1. ENDLOOP . WRITE /. ENDFORM. " END OF THE PRINT. 2009/9/10 eight queen problem using ABAP, N queen problem, recursion*&---------------------------------------------------------------------*
*& Report Z_N_QUEEN_BY_RECURSION *& *&---------------------------------------------------------------------* *& FINISHED BY Seine Zhang AT 2009-09-10 *& *&---------------------------------------------------------------------* REPORT Z_N_QUEEN_BY_RECURSION.
*** for show in the statusbar when processing CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING TEXT = 'The report is processing the queen problem, please wait for the result.'. DATA: BEGIN OF ROW ,
VAL TYPE I, END OF ROW . DATA: I_COLUM LIKE ROW OCCURS 0 WITH HEADER LINE . "COLUM OF THE COLISSION DATA: I_LEFT LIKE ROW OCCURS 0 WITH HEADER LINE . "LEFT DIAGONAL OF THE COLISSION DATA: I_RIGHT LIKE ROW OCCURS 0 WITH HEADER LINE . "RIGHT DIAGONAL OF THE COLISSION DATA:BEGIN OF queen, row TYPE I VALUE '0', END OF queen. DATA: I_QUEEN LIKE QUEEN OCCURS 0 WITH HEADER LINE." QUEEN FOR PRINT. DATA: OK_TIMES TYPE I VALUE '0'.
******GET THE COUNT OF THE QUEEN
SELECTION-SCREEN COMMENT /12(30) remark. PARAMETERS: count TYPE I DEFAULT '8'. INITIALIZATION. remark = 'Please enter the count of queens'. count = '8'. ******PROCESS THE QUEEN PROBLEM
START-OF-SELECTION. WRITE: /,'N QUEEN PROBLEM',/. IF COUNT > '0' AND COUNT < '20'." IF THE COUNT OF QUEEN IS MORE THAN 20, THE TIME MAYBE UNTOTERANBLE. WRITE: /, COUNT,/. PERFORM MAIN_PROCESS USING COUNT. ELSE. WRITE: /, 'WRONG COUNT'. ENDIF. ****THE MAIN PROCESS FUNCITON
FORM MAIN_PROCESS USING I_NUM. ************INITIALIZATION********************** "initial the queen array DO I_NUM TIMES . I_QUEEN-ROW = -1 . APPEND I_QUEEN . ENDDO. "initial the colum and left ,right diagonal "1-NUM DO I_NUM TIMES . I_COLUM-VAL = 0 . APPEND I_COLUM . ENDDO. "ROW-COLUM+NUM(1-2*NUM) DO I_NUM * 2 TIMES . I_LEFT-VAL = 0 . APPEND I_LEFT . ENDDO. "ROW+COLUM(1-2*NUM) DO I_NUM * 2 TIMES . I_RIGHT-VAL = 0 . APPEND I_RIGHT . ENDDO. ********END OF INITIALZATION******************* " OUTPUT THE COLUM FORMATE. DATA I_OUT TYPE I. I_OUT = 1. WRITE: ' |'. DO COUNT TIMES. WRITE (2) I_OUT. I_OUT = I_OUT + 1. ENDDO. WRITE: /. " END OF THE OUTPUT FORMATE. " CALL CORE THE PROCESSING
PERFORM PROCESS_QUEEN USING 1. " OUTPUT THE TOTAL OF SOLUTIONL.
WRITE: /, 'There are ',OK_TIMES, 'in all for the solution of ', COUNT,' queen problem'. ENDFORM. " END OF THE MAIN PROCESS
****the core queen process****
****I_COUNT MEANS PROCESSING THE I_COUNT ROW. FORM PROCESS_QUEEN USING I_COUNT. DATA: I_GO TYPE I. I_GO = 1. WHILE I_GO <= COUNT. READ TABLE I_COLUM INDEX I_GO . READ TABLE I_LEFT INDEX I_COUNT - I_GO + COUNT. READ TABLE I_RIGHT INDEX I_GO + I_COUNT . " IF ALL THE POSTION IS NOT COLISSION WITH OTHERS, THEN CHANGE THE STATUS OF THE POSTION, AND CALL THE PROCESS_QUEEN FOR THE NEXT ROW PROCESSING. IF I_COLUM-VAL = 0 AND I_LEFT-VAL = 0 AND I_RIGHT-VAL = 0. "WRITE I_COLUM-VAL. I_COLUM-VAL = 1 . MODIFY I_COLUM INDEX I_GO . I_LEFT-VAL = 1. MODIFY I_LEFT INDEX I_COUNT - I_GO + COUNT . I_RIGHT-VAL = 1. MODIFY I_RIGHT INDEX I_GO + I_COUNT . "CHANGE THE VALUE OF THE QUEEN. READ TABLE I_QUEEN INDEX I_COUNT. I_QUEEN-ROW = I_GO. MODIFY I_QUEEN INDEX I_COUNT. " check whether the solution has been get,if yes, print out. " else call the next row process_queen proecessing. IF I_COUNT < COUNT." IF THE ROW IS NOT THE LAST ROW, PROCESS NEXT ROW, ELSE PRINT OUT. DATA: I_NEXT TYPE I. I_NEXT = I_COUNT + 1. PERFORM PROCESS_QUEEN USING I_NEXT. ELSE. PERFORM PRINT_QUEEN. ENDIF. "return to the value before, to get more solution.
READ TABLE I_COLUM INDEX I_GO . READ TABLE I_LEFT INDEX I_COUNT - I_GO + COUNT. READ TABLE I_RIGHT INDEX I_GO + I_COUNT . I_COLUM-VAL = 0 . MODIFY I_COLUM INDEX I_GO . I_LEFT-VAL = 0. MODIFY I_LEFT INDEX I_COUNT - I_GO + COUNT . I_RIGHT-VAL = 0. MODIFY I_RIGHT INDEX I_GO + I_COUNT . ENDIF.
I_GO = I_GO + 1. ENDWHILE. ENDFORM. " END OF THE CORE PROCESS ****the print FORM of the queen******
FORM PRINT_QUEEN. OK_TIMES = OK_TIMES + 1. DATA i_index type i. i_index = 1." ROW INDEX LOOP AT I_QUEEN . Data i_qu type i. i_qu = 1. WRITE: (2)i_index." OUTPUT THE ROW NUM WHILE i_qu < I_QUEEN-ROW. " OUTPUT THE BLANK BEFORE THE QUEEN
WRITE: '_ '. i_qu = i_qu + 1. ENDWHILE. WRITE: '* '. " THE QUEEN POSITION
WHILE i_qu < COUNT." OUTPUT THE BLANK AFTER THE QUEEN
WRITE: '_ '. i_qu = i_qu + 1. ENDWHILE. WRITE /. i_index = i_index + 1. ENDLOOP . WRITE /. ENDFORM. " END OF THE PRINT. 2007/4/17 microsoft 的问题?windows的问题?mypc的问题?or my RP问题? 由于最近要研究postgresql,需要看pg的文档,于是下载了一个chm文档(毕竟在网上直接看不方便的,现在着上网速度...).但是下好後,发现总不能打开,然后突然想起,好像以前也有遇到这种问题,于是乎在网上搜搜,发现说解决不能打开chm文件的文档倒是蛮多的,首先一种说法,是说windows\system32下的hhctrl.ocx文件在装某个软件时被替换成老版本了。于是把此文件搜出来,发现版本比网上说的版本还新。然后又发现有说如果WINDOWS安装了安全更新 896358 的话,下载的CHM文件无法打开最简单的办法是,点击CHM文件的属性,发现“常规”栏下多出几行字:“安全:此文件来自其他计算机,可能被阻止以帮助保护计算机”点击旁边的解除锁定即可解决。心想,我系统一直有更新的,估计可以解决了吧,于是查看要打开的chm文件的属性,发现确有这么回事,按说明那样解除了锁定。但是结果发现还是得到的是不能打开chm文档,郁闷了...
后来又看到说什么放到根目录,就可以打开了,于是放到C盘根目录,发现仍然不行。
后来想想不对,难道是我文件名称的原因??? 因为文件很长,而且还有很多标点什么的。(PostgreSQL 8.0.0 中文文档.chm, 很荒唐吧!!)于是把文件名改为postgresql.chm,奇迹般发现可以打开了。
这下应该是领悟了,应该是中文名称的原因的,于是在文件名中添加中文,发现果然不行。于是得出结论,是变态的microsoft, windows的问题。居然不能打开有中文名的chm文件。不过貌似以前都可以的,真是....
不管了,反正可以打开了,继续看文档去,论文啊,我来了.....
---------------------------------------------------------------
刚才再次测试了一下,发现只要是打开路径有中文名的chm文件,均不能打开。估计是windows中文编码的原因了..... 2007/4/16 install postgresql and pgadmin on windowsinstall PostgreSQL:
在Windows上安装一个已编译好的PostgreSQL数据库软件,可以从http://www.postgresql.org/ftp/binary/v8.2.1/win32/下载到目前最新的版本。以 Windows XP SP2 默认环境进行手动安装为例:
首先下载postgresql-8.2.1-1-binaries-no-installer.zip最新版待用,下列步骤达到手工安装好PostgreSQL,初始化数据库,将PostgreSQL注册为服务。
1、PostgreSQL.zip解压至d:\postgresql后,创建一个data目录;
2、新开一个cmd窗口,并cd 至d:\postgresql\bin ; 3、initdb -D d:\postgresql\data -E UTF8 --locale=C 4、pg_ctl register -D d:\postgresql\data -N pgsql -U [username] -P [password] 即将postgres注册为服务,服务名为pgsql;此处的username 和password为后面在pgadmin中的设置的用户名及密码。如果缺省会使用windows的用户名,密码无。 如果今后忘了用户名或密码什么的,可以把data删除,重新进行上述初始化。
以下为测试步骤: 5、net start pgsql即可启动postgresql,进行后续工作了; 6、createdb -E UTF8 testdb,创建测试数据库 7、psql testdb 进入交互方式,直接操作数据库; 另上述第3步及6步为避免以后可能发生的亚州大字符集的乱码问题,统一使用UTF8。 install pgAdmin:
可以从http://ftp2.us.postgresql.org/postgresql//pgadmin3/release/下载pgadmin的最新版本。此处v1.6.3/为例。然后就是,直接安装。(是直接的.msi文件). 在添加server的问题上,首先选择add server...,得到New Server Registration对话框。(下面对于该对话框中各项的说明的一段是在http://www.nabble.com/PostgreSQL---pgadmin-support-f784.html 问到的。thanks to Raymond O'Donnell
)
"Name" is just a descriptive name you can give the server instance in
pgAdmin to distinguish it in the list - it has no meaning outside pgAdmin. "Host" is the name or IP address of the machine the server is running on - if it's the same computer as the one on which you're running pgAdmin, then "localhost" or "127.0.0.1" will do. "Port" is the TCP/IP port on which the server is listening - this is 5432 by default, unless you chaned it when installing PostgreSQL. "Username" and "Password" are the username and password of a database user as which you can connect to the server. PgAdmin defaults to "postgres", which by convention is the PostgreSQL super-user. I missed what OS you said you were on, but if on Windows and you used the Windows Installer package, then you would have been prompted for a password for this user - use the same password here. If PostgreSQL is running on Windows, then it runs as a service, and "service" is the name of that service. Look in "Administrative Tools" -> "Services" to find out what yours is called. 另外当连接上server后,可以在server中看到前面建的数据库testdb, 如果要建立表什么的,可以在testdb数据库的public栏的table中进行相关操作。
2006/10/23 LISTENING, WRITING AND READING---HONEST[work]
HONEST
Can the good honesty days be about to return?The question itsself seems simple and its implication should be given serious consideration. The fact that so many dishonesties go around makes us have no choice but to dwell upon the famous proverb, whichi goes: honest is the best policy.
To the popular mind, it is immediately assumed that when the honest is argued, it is honest behaviour of enterprise what is mentioned serveral points analyzed before might equipus with tacit understanding of what were encountering.To begin with, those companies who take the honest as their cardinal principle always win the trust and respect from the consumers. In addition those enterprises, instead which always produce the fake and inferior goods will be bound to become the cast thing the market chooses. From example the inferior milk powdr has been laid bare, which was reported to have claimed dozens of baby lives, both in the press and TV. It follows that no issue is as crucial to build up the honesty-oriented societ as beating the drum of spirit of honest.
Judging from what has been argued above, we have come to realize that the value of honest, like an apple in oureyes, has been driving force of firmly establishing the values of honor and disgrace. It is necessary, hence, that effors be made to echo the spirit of honest vigorously. For one thing, the government should make law to prize the honesties and discipline the dishonesties. For another, we should spare no effort to bring home to people the value of honest. Only by undergoing thest measures, can we safely say without any exaggeration, those good honesty days will be on the horizon. 2006/8/22 What's Ruby?---A Free OOP Scripting Language During the recent study of one project, I just met 'RUBY' for the first time. And collected some excerpt as following:
Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, extensible, and portable.
Some Greate Features of Ruby:
The Creator of Ruby is Yukihiro Matsumoto. 2006/7/9 Hello World! ---C# Programmingusing System;
namespace HelloWorld
{ class Hello { public static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } First Day to Study C# Programming Language Formally, Just Remarked It! 2006/5/21 如何通过连接池实现JSP中连接SQLServer(如果你在学习JSP 或者java 连接数据库,同时也遇到了关于sql server 数据库连接得问题,那么本文对你将可能很有用)
本文适用于eclipse 中连接sql server 或者是直接通过tomcat 访问sql server , 如果 WSAD java bulid path 设置正确也是适用的。
首先,我要感谢我的老师,也是在她的指引下我实现了这个功能。
在学习JSP得过程中,对于实现与数据库的连接,我在开初就实现了通过数据源访问数据库的
方法,但后来发现这种模式并不好,因为如果要实现在客户的机器上连接,那还得专门配置数据源, 这时发现如果用连接池那么就很好地省去了设置数据源的麻烦,今天我就这个问题展开讨论: 首先要实现连接池访问数据库,需得满足几个前提条件:(此处以直接通过tomcat 访问sql server为例说明,其他的基本相同)
1, 保证JDBC的3个jar文件都已经安装.driver 可在www.microsoft.com 的网站有提供下载(Microsoft SQL Server 2000 Driver for JDBC) 下载完成后安装此驱动,同时把lib中的msbase.jar, mssqlserver.jar, msutil.jar 三个文件放到tomcat 的lib中。 如果此步未实现或是不完成正确时,当运行连接数据库的jsp文件时会出现关于Microsoft SQL Server 2000 Driver for JDBC的相关出错信息。 2, 保证你的sql server的补丁是在sp3后的,如果不敢决定,可以查看你的版本补丁信息,如果补丁不正确可能会出现建立套接字出错了的信息(socket),如果 是关于socket 的报错,你就得下在补丁安装。下载地址:http://cert.sjtu.edu.cn/download/servicepack/cn/SQL2000-KB884525-SP4-x86-CHS.EXE
(或是直接到microsoft网站下载)安装过程也要注意,身份验证务必选中SQL Server和Windows 选项(同时也要把你的sql server 服务器得属性中的安全性项中的身份验证方式改为SQL Server和Windows ,如果选择仅windows验证,将无法实现连接池的各种操作。在安装过程中会提示输入sa的密码,一般情况下sa默认是没有密码的,如果没有密码会在接下来的安装过程中提示输入新密码,我的建议是设一个简单的,当然不能忘记了,否则那样就麻烦了,假设我们这里设置的密码是111111 。安装完成后必须重起计算机,否则sql server将无法访问。
3. 如果你前两步都是正确,那么接下来就基本没有问题。运行下面的jsp测试你的连接池是否成功:(假设保存为test.jsp, 存放到Tomcat 5.5\webapps\ROOT下) <%@ page import="java.lang.*,java.io.*, java.sql.*, java.util.*" contentType="text/html;charset=gb2312" %>
<% Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; //pubs is your database 已经存在的数据库 String user="sa"; String password="111111"; Connection conn= DriverManager.getConnection(url,user,password); Statement sql=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); ResultSet rs; rs=sql.executeQuery("Select * From authors"); out.println(" Congratulations!");
while(rs.next()) out.println(rs.getString(1)); %> 在程序中我用的是sql server中默认有的数据库pubs,当然你也可以改为其他你有的数据库。然后在地址栏:http://localhost:8080/test.jsp
如果出现下面类似的内容那么恭喜你,你的连接池成功了: Congratulations!
172-32-1176 213-46-8915 238-95-7766 267-41-2394 274-80-9391 341-22-1782 409-56-7008 427-17-2319 472-27-2349 486-29-1786 527-72-3246 648-92-1872 ........................ 当然,对于初学者也许在1中的问题比较多,可以上google 或csdn 搜索相关更详细的资料。
在此我得提示所有初学者:网上的资料是无限的,关键在于你怎么使它有限,同时对你有用。 2006/5/15 今日感觉不错因为实现JSP中检查用户名是否可用的功能 今日虽然下午上课基本没听就在那大睡,不过还是挺满足的,因为解决了一个软大二上一个一直困扰的问题,就是关于如何实现在注册时候检查用户名的可用。最后是通过分别用两个form表单来实现,每个表单用不同的处理页面。同时在注册表单设置一个hidden的用户名通过onchange实现统一。这样就可以在注册前先通过检查用户名是否可用了!
今晚去做单片机试验被老师说了,但想想还是自己的问题,没有自己认真去写程序,得到的结果又怎么好呢? 不过至少还是把书上的看懂了!领会了一些东西!
今天也有不爽的地方,下午本来是要在电子商务课上机的时候拷上次留在机房的os报告,结果不上了,看来明天上午还得跑一堂勒!
附上今天解决问题的核心代码:
--------------------------------------------------------------------------------------------------------------------------
function nickname()
{ form1.nickname.value=form2.nickname2.value; } --------------------------------------------------------------------------------------------------------------------------
<FORM action="checkName.jsp" method="post" onSubmit="return on_check()" name="form2">
<TR><TD colspan=2 align=center>注册信息输入</TD> </TR> <TR> <TD width=25%>用户登录名:</TD> <TD><INPUT type=text size=15 name="nickname2" onChange="nickname()">(长度在6-20个字符之间) <INPUT type=button name="testName" value="检查是否可用"></TD> </TR> </FORM> <FORM action="RegisterProcess.jsp" method="post" onSubmit="return on_submit()" name="form1"> <TR> <TD><INPUT type=hidden size=15 name="nickname"> </TR> ................
</FORM> |
|
|