(DbTest.java:25)at DbTest.main(DbTest.java:46)
Press any key to continue...
在这儿,用户已经登陆上去,但是却不能访问里边的数据表,出现这个问题的原因在于sa用户为系统用户,它虽然能够登陆数据库,但是test数据库里边却没有这个用户的访问权限,所以,我们现在为这个数据库重新建立一个用户share,建立过程如下:
在test数据库中选重用户 ---〉新建用户 -- 〉名称选择(这一步中有两个关键点:身份验证选sql身份验证,默认数据库选test)-〉建立新教色share ,此时更改程序,将用户登陆名和密码修改一下,重新运行程序:
driver is ok
conection is ok
1001
1002
1003
1004
1005
1006
Press any key to continue...
这次顺利通过测试
其实这些小问题花了我一个晚上才解决,真是浪费时间,所以写下来希望能使遇到类似问题的朋友不要重蹈覆辙,在此提醒大家遇到问题时多上网查查,多在论坛里问问,这样你学到的会更多,更节省时间,更有效率。
总结:Sqlserve 和JDBC 的融合问题,关键涉及到sp3补丁(端口开放)还有用户问题,解决这两个问题之后,剩余的便是Sqlserver 操作问题了,还有一点在远程操作的时候,要把Sqlserver 组设置一下,在安全性里边亦将身份验证更改为Sqlserve 验证即可。
------------------------------
------------------
windows xp sp2下jsp连接sql server 2000
注意:由于博客的文本编辑带有html代码解释功能,本文中对代码做了一定的改动,把所有的<改成了#,所有的>改成了$,如果需要用代码可以用记事本的“替换”功能替换回来即可。
基本信息:windows xp sp2、Tomcat5.0 、J2SDK1.5、Sql server 2000开发版
一、安装JDK
这个没有什么好说的,需要注意的是JDK1.5和以前的版本有个不同点,它默认的安装目录在C:\\Program Files\\Java目录下,由于路径名里有空格,所以可能会给以后的命令行执行有一定的影响,并且和以往的习惯也有些不同,所以建议安装到C盘目录下就可以了。我的路径是C:\\jdk1.5
二、安装Tomcat
一路NEXT下来就可以了,注意有会有一个设置用户名密码的提示。我是安装在C:\\Tomcat 5.0了。
三、安装SQL Server2000
注意在windos xp下只能装两个版本,一个是开发版,另一个好像是个人版,记不得了。装的时候也基本上是一路NEXT下来,不过有一个地方要选择是采用Windows NT验证方式,一种是采用混合验证模式,为了安全,建议采用后者。并且要给超级管理员sa设上密码。
最重要的是,不要忘了给SQL Server 2000打上补丁。由于sql server 2000存在漏洞,我们宿舍楼的局域网就因为中毒机器太多而造成网络拥塞。在windows xp中就把1433端口屏蔽了。要启用这个端口,要安装一个sql server 2000的sp3补丁。
四、设置环境变量
path路径:在系统变量的path前面加上C:\\Tomcat 5.0\\bin;C:\\jdk1.5\\bin;
classpath路
径.;C:\\jdk1.5\\lib\\dt.jar;C:\\jdk1.5\\lib\ools.jar;C:\\jdk1.5\\lib\\rt.jar;C:\\jdk1.5;C:\\Tomcat 5.0\\common\\lib,其中的.代表当前路径,其它的可以简单的设为C:\\jdk1.5\\lib,但是最好还是一个一个列出来。注意这里你如果在连接数据库时用到的是JDBC-ODBC桥接的方式的话,还要把桥接的驱动的路径加在classpath里面。有一个细节,好像在jdk1.5中,这个驱动不在C:\\jdk1.5\\lib下,而是在C:\\jdk1.5\\jre\\lib的rt.jar中,可以适当的设置一下或者把这个文件拷贝到classpath能到达的地方。
java_home路径:C:\\jdk1.5,即是jdk的安装目录。
tomcat_home路径:C:\\Tomcat 5.0,即是tomcat的安装目录。
catalina_home路径:C:\\Tomcat 5.0
catalina_base路径:C:\\Tomcat 5.0,这两个环境变量的作用是可以通过命令行方式来启动和关闭tomcat,方法是打开命令行提示窗口,键入startup就可以启动,键入shutdown就可以关闭了。注意不要强行关闭tomcat,因为既然给了一个关闭的方式必然有它的道理,为了安全起见,还是用shutdown来关闭较为合适。当然不设置这两个环境变量也可以,只不要启动时用鼠标来从开始菜单启动。
五、建立数据库表
建立一个数据库testdb,在它里面建立一个表users。里面有两列,name和password,数据类型都取默认的char类型就行了。注意在SQL SERVER中表的名字不能为user。否则会出现错误。
六、配置数据DSN
打开“控制面板->性能与维护->管理工具->数据源”,点击“系统DSN”,点击“添加”,数据驱动选择“SQL SERVER”,点击“完成”,在弹出的对话框的“名称”里填入此DSN的名称,比如test。“描述”可以不填,“服务器”选择本地,即(local)。点击“下一步”,将弹出一个新的对话框。选择“使用sql server验证”,在下方填入用户名和密码。点击“下一步”,在新弹出的对话框的上方,选中“更改默认的数据库为”,在下侧的下拉菜单里选择你要映射的数据库,这里我们选择testdb。点击“下一步”,再点击“完成”。在新的对话框下方有个“测试数据源”的按钮,点击它,如果出现“测试成功”则表示建立DSN成功。点击完成即可。注意以后在程序中访问数据库是根据这里的系统DSN的名称来访问数据库的,而非真实的数据库名,在这里即是通过test而非testdb。
七、写测试网页文件
这里我们写一个简单的功能,有两个页面,第一个页面adduser.htm负责与用户进行交互,它可以让用户输入用户名和密码,并且提交它,但是它自己不处理,而是由第二个页面文件处理。第二个页面为jdbc.jsp,它接受第一个页面传递过来的参数,然后把它插入到users表中,然后把表中所有的用户都检索出来并且显示它。
把这两个文件放在一个文件夹jdbc中,在jdbc文件夹中新建一个文件夹,名称为WEB-INF,在它里面建一个web.xml文件,然后把jdbc文件夹放到tomcat的工作目录C:\\Tomcat 5.0\\webapps中。
web.xml内容
#?xml version=\"1.0\" encoding=\"ISO-8859-1\"?$
#!DOCTYPE web-app
PUBLIC \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\"
\"http://java.sun.com/dtd/web-app_2_3.dtd\"$
#web-app$
#display-name$My Web Application#/display-name$
#description$
A application for test.
#/description$
#/web-app$
adduser.htm文件内容:
#html$
#head$
#title$Add User#/title$
#/head$
#body$
#form method=\"POST\" action=\"jdbc.jsp\"$
#p align=\"center\"$姓名
#input type=\"text\" name=\"name\" size=\"20\"$#/p$
#p align=\"center\"$密码
#input type=\"password\" name=\"pwd\" size=\"20\"$#/p$
#p align=\"center\"$
#input type=\"submit\" value=\"提交\" name=\"B1\"$#/p$
#/form$
#/body$
#/html$
jdbc.jsp文件内容:
#html$
#head$#title$Add User to DB#/title$#/head$
#%@page import=\"java.sql.*\"%$
#%@page import=\"com.microsoft.jdbc.sqlserver.SQLServerDriver\"%$
#%@page import=\"com.microsoft.jdbc.*\"%$
#%@page import=\"java.util.*\"%$
#body$
#pre$
#%
//Get parameters from request
String name,pwd;
int num;
name=request.getParameter(\"name\");
pwd=request.getParameter(\"pwd\");
//add infomation to DB
try{
Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\").newInstance();
Connection con=DriverManager.getConnection(\"jdbc:odbc:test\
Statement stmt=con.createStatement();
stmt.executeUpdate(\"insert into users values('\"+name+\"','\"+pwd+\"')\");
//query DB for display all users
ResultSet rs=stmt.executeQuery(\"select * from users\");
//rs.first();
out.println(\"All user in DB!\");
while(rs.next()){
out.print(\"user name: \");
out.print(rs.getString(\"name\")+\" out.println(rs.getString(\"password\"));
}
num=stmt.getMaxRows();
out.println(num);
rs.close();
password: \");
stmt.close();
con.close();
}catch(Exception ex){
out.println(ex.getMessage());
}
%$
#/pre$
#/body$
#/html$
八、测试效果
启动tomcat,启动浏览器,在浏览器的地址栏中键入
http://localhost:8080/jdbc/adduser.htm,在出现
的网页中填入用户名密码,点击“提交”,即可跳到jdbc.jsp文件,列出此时数据库中所有的用户。