jsp和sqlserver数据库的连接问题及解决办法
JSP 是Sun公司推出的一种开发语言,他完全解决了目前ASP,PHP的一个通病脚本级执行,可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。由于要jsp语言跨平台的工作能力,使得jsp技术在众多技术中脱颖而出,用jsp开发过程中经常会用到jsp和sqlserver数据库的连接,虽然较简单,但是在连接测试的过程中,经常会遇到了许多问题,花费不少时间。所以本文将这些总结出来,让大家学习达到事半功倍的效果。 1jsp和sql数据库的连接方法 1.1 通过桥连方式连接数据库
桥连方式就是通过odbc设置数据源访问数据库,首先是设置odbc数据源。设置方法:通过控制面板下的管理工具打开odbc数据源->选择系统dsn(单击添加)->接下来输入选择数据库类型sql sever,输入数据源名,选择服务器、连接数据库的方式、输入数据库的登陆用户和密码->测试连接,如果测试成功的话,那么你的dsn就建立好了。我的dsn数据源名字为news,以 \登陆,密码也是sa。新建测试类进行测试。 import java.sql.*;//加载java数据连接包 public class conectionmanager{
public static void main(String args[]) {
String url = \取得连接的url名。 Connection con; //实例化一个Connection对象 try {
Class.forName(\加载jdbc-odbc桥驱动
con = DriverManager.getConnection(url, \ System.out.println(\数据库连接成功 \ } catch(java.lang.ClassNotFoundException e) { System.out.println(\加载jdbc-odbc桥错误\ } } }
运行显示,数据库连接成功,上面这个程序中展示了如何使用JDBC-ODBC连接数据库。数据库连接成功了,就可以使用SQL语句对数据库进行增、删、改、查等操作。通过这种方法访问数据库,需要客户端必须设置ODBC和有相应的数据库客户机的驱动。在没有数据库厂商提供的的jdbc驱动的情况下,是一种很好的方法。
1.2直接纯java直连方式访问数据库(以sql2000为例) 1.2.1下载SQL Server 2000 driver for JDBC
该驱动截止目前有四个版本,建议下载最新的SP3版。该驱动安装方法:请将sql2000驱动安装目录下的lib目录下的三个.jar文件加到CLASSPATH中;如果你使用的是JBuilder或Eclipse,将这三个文件根据IDE的提示加到工程中。
1.2.2驱动的加载方法
在建立连接之前,要先加载SQL Server 2000 JDBC的驱动,代码如下:
Class.forName(\iver\
在此注意,forName方法的参数字符串必须完全相同于以上内容,大小写是区分的,其实这个串就是驱动类的完整名称:包名+类名。
1.2.3获得一个连接
在操作数据库之前,要先获得与数据库的一个连接,使用如下代码格式:
DriverManager.getConnection(连接字符串, 登录用户名, 登录密码); 例:
DriverManager.getConnection(\/localhost:1433; DatabaseName=pubs\ 在此处关键的是连接字符串的内容,localhost部分即服务器的名字,可以更改;1433部分为SQL Server使用的端口号,根据实际情况修改即可;DatabaseName即为要连接的数据库的名字,在此注意DatabaseName之前的是分号,而不是冒号。 1.2.4 代码实例测试
根据上述分析,修改1.1的测试类test,只需修改
classform,和etconnection即可。一般都能测试成功。 但是jsp和sql2000相连接的时候,有时候很难测试成功,下面我就列出一些常见问题的解决办法,供大家参考。 1.3 通过db browser 连接数据库
2jsp和sql数据库连接的常见错误的解决办法 2.1 运行时提示错误Error establishing socket 原因及解决办法
①通过url连接的时候指定的服务器名称或者服务器地址不正确,这一点你可以通过ping来验证。②指定的服务器上的sql server的服务没有启动,你可以通过sql server的查询工具来验证这个问题。③指定端口错误,sql server的默认端口是1433。④sql server没有提供tcp/ip的服务,你可以通过sql server的管理工具来查看这个问题。⑤如果你的系统是 windows XP 或者 Windows 2003,那么升级你的SQL Server 2000,为其打上最新的补丁。这一步可能不是必需的,因操作系统环境而定,在不打补丁的情况,有时可以正常连接,有时却不能,所以建议还是安装最新的SQL Server 2000补丁(SP4)和JDBC驱动(SP3)。一般情况下,打上SQL Server 2000的补丁就可解决。
2.2 运行代码提示\错误 如果提示\,那一定是 Class.forName(\
iver\该段代码拼写有误,或者是SQL Server 2000 Driver For JDBC Lib目录下的三个.jar文件未加入到CLASSPATH中。将驱动包加入classpath中可以解决。假设SQL Server for JDBC 驱动程序安装在d:\\jdbc\\,则classpath应该设置如下:
Classpath=.;…;d:\\jdbc\\lib; :\\jdbc\\lib\\mssqlserver.jar; :\\jdbc\\lib\\msutil.jar; :\\jdbc\\lib\\msbase.jar;注意:设置时要在最前面的点号和分号。 2.3为数据库创建用户和授权问题
如果在连接中出现类似\无法打开登录 'XXX' 中请求的数据库。登录失败。\或类似\拒绝了对对象 'ZZZ'(数据库 'YYY',所有者 'dbo')的 SELECT 权限\的错误。就应该为数据库创建用户和授权。
在SQL2000中新建一个数据库news和表test,有两种方法为该数据库创建用户账号:
方法一、用查询分析器为该数据库创建一个账号:sp_addlogin 'aa','123','news' ,其中'aa'为账号名,'123'为密码,'TEST'使用的数据库。
然后授权账号aa以用户名aa访问数据库news USE TEST GO
sp_adduser 'aa','aa' //第1个aa为账号名,第2个aa
为访问时的名字,若不设定,则默认与账号名相同。 方法二、用企业管理器右键点击数据库news下的用户,选择新建数据库用户,在登录名中选择,若没有想添加的用户,则选新建,在常规标签中输入名称(aa)、选择登录SQL的验证方式,然后在数据库访问标签下选择允许该用户账号访问的数据库,然后先点确定再点取消即可完成用户的创建。接下来要双击刚创建的用户aa,点击权限,为数据库用户aa在下方对象列表中授予权限(通常是为表赋予查询、更新、插入、删除等权限)。 3 结束语
由于系统需求,最近在开发过程经常用到jsp和SQL 2000,其中遇到了诸多问题,首先是SQL 2000数据库的安装问题,版本与操作系统的兼容性问题,还有sqlserve 和jdbc 的融合问题,sqlserver 操作问题,以及在连接测试过程中常见的一些问题。本文从使用角度出发,列出了jsp和sql2000连接三种常用方法,归纳了常见的连接问题的解决办法,希望能给遇到类似问题的jsp学习者作为参考。