您好,欢迎来到九壹网。
搜索
您的当前位置:首页JSP连接SQL SERVER问题总结

JSP连接SQL SERVER问题总结

来源:九壹网


首先是SQL 2000数据库的安装问题,在此我主要讲些关于SQL 2000的版本与操作系统的兼容性问题:SQL 2000总共有7个不同版本,适应不同等级用户的需求。

我试了一下,在XP系统下只有“个人开发版”能正常安装而不出现错误,所以大家在安装时要注意,具体安装时的配置参照相关说明就可以了。

下面说明如何连接到SQL 2000数据库,首先当然是要下载JDBC驱动程序,最好去微软官方网站下载,然后将下载到的三个JAR包放入你的WEB应用的WEB-INF/lib/下。接下来编写程序进行测试:

/***********************************************

/*

/*DBTest.java

/*

/******************************************* */

import java.sql.*;

public class DBTest

{

Connection con;

Statement sta;

ResultSet rs;

String driver;

String url;

String user;

String pwd;

public DBTest()

{

driver = \"com.microsoft.jdbc.

sqlserver.SQLServerDriver\";;

url = \"jdbc:microsoft:sqlserver:

//localhost:1433;DatabaseName =test\";

//test为数据库名

user = \"sa\";

pwd = \"sa\";

//请更改为你相应的用户和密码

init();

}

public void init()

{

try{

Class.forName(driver);

System.out.println(\"driver is ok\");

con = DriverManager.

getConnection(url,user,pwd);

System.out.println(\"conection is ok\");

sta = con.createStatement();

rs = sta.executeQuery

(\"select * from room\");

while(rs.next())

System.out.println

(rs.getInt(\"roomNum\"));

}catch(Exception e)

{

e.printStackTrace();

}

}

public static void main(String args[])

//自己替换[]

{

new DBTest();

}

}

按道理讲,上边这段代码应该没错,可首先我们来看一下,如果sqlser服务器没有升级到sp3(在使用jdbc时,如果系统是xp或者2003务必要把sqlserver 升级到sp3,往上到处都有下的),我们看看运行结果:

driver is ok

java.sql.SQLException: [Microsoft]

[SQLServer 2000 Driver for JDBC]

Error establis

hing socket.

at com.microsoft.jdbc.base.

BaseExceptions.createException(Unknown Source

)

at com.microsoft.jdbc.base.

BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.base.

BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.

TDSConnection.(Unknown Source)

at com.microsoft.jdbc.sqlserver.

SQLServerImplConnection.open(Unknown Sou

rce)

at com.microsoft.jdbc.base.

BaseConnection.getNewImplConnection(Unknown S

ource)

at com.microsoft.jdbc.base.

BaseConnection.open(Unknown Source)

at com.microsoft.jdbc.base.

BaseDriver.connect(Unknown Source)

at java.sql.DriverManager.

getConnection(DriverManager.java:523)

at java.sql.DriverManager.

getConnection(DriverManager.java:171)

at DbTest.init(DbTest.java:32)

at DbTest.(DbTest.java:25)

at DbTest.main(DbTest.java:46)

Press any key to continue...

出现上边错误的主要原因是默认的数据库服务器端口 1433没有打开,无法直接连接。如果升级到sp3则这个问题可以结决,我们再来看看升级之后,程序运行的结果:

driver is ok

conection is ok

java.sql.SQLException:

[Microsoft][SQLServer 2000 Driver for JDBC]

[SQLServer]对

象名 ’room’ 无效。

at com.microsoft.jdbc.base.

BaseExceptions.createException(Unknown Source

)

at com.microsoft.jdbc.base.

BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.

TDSRequest.processErrorToken(Unknown

Source)

at com.microsoft.jdbc.sqlserver.tds.

TDSRequest.processReplyToken(Unknown

Source)

at com.microsoft.jdbc.sqlserver.tds.

TDSExecuteRequest.processReplyToken(

Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.

TDSRequest.processReply(Unknown Sour

ce)

at com.microsoft.jdbc.sqlserver.

SQLServerImplStatement.getNextResultType

(Unknown Source)

at com.microsoft.jdbc.base.

BaseStatement.commonTransitionToState

(Unknown

Source)

at com.microsoft.jdbc.base.

BaseStatement.postImplExecu

te(Unknown Source)

at com.microsoft.jdbc.base.

BaseStatement.commonExecute(Unknown Source)

at com.microsoft.jdbc.base.

BaseStatement.executeQueryInternal

(Unknown So

urce)

at com.microsoft.jdbc.base.

BaseStatement.executeQuery(Unknown Source)

at DbTest.init(DbTest.java:35)

at DbTest.(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文件,列出此时数据库中所有的用户。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务