jsp和sqlserver数据库的连接问题及解决办法
摘要:数据库操作是目前项目开发的根本,jsp技术是当前较为热门的W eb开发技术, jsp和sqlserver数据库进行连接是一项复杂的工作。本文介绍了jsp连接sqlserver数据库的三种基本方法,给出了jsp连接sql数据库过程中一些常见问题的解决办法。
关键词:odbc-jdbc;数据库;端口;授权
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"登陆,密码也是sa。新建测试类进行测试。
import java.sql.*;//加载java数据连接包
public class conectionmanager{
public static void main(String args[]) {
String url = "jdbc:odbc:news"; //取得连接的url名。
Connection con; //实例化一个Connection对象
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载jdbc-odbc桥驱动
con = DriverManager.getConnection(url, "sa", "sa");
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("com.microsoft.jdbc.sqlserver.SQLServerDriver");
在此注意,forName方法的参数字符串必须完全相同于以上内容,大小写是区分的,其实这个串就是驱动类的完整名称:包名+类名。
1.2.3获得一个连接
在操作数据库之前,要先获得与数据库的一个连接,使用如下代码格式:
DriverManager.getConnection(连接字符串, 登录用户名, 登录密码);
例:DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=pubs", "sa", "");
在此处关键的是连接字符串的内容,localhost部分即服务器的名字,可以更改;1433部分为SQL Server使用的端口号,根据实际情况修改即可;DatabaseName即为要连接的数据库的名字,在此注意DatabaseName之前的是分号,而不是冒号。
1.2.4 代码实例测试
根据上述分析,修改1.1的测试类test,只需修改classform,和etconnection即可。一般都能测试成功。
但是jsp和sql2000相连接的时候,有时候很难测试成功,下面我就列出一些常见问题的解决办法,供大家参考。
1.3 通过db browser 连接数据库
使用这种方式连接数据库,你编辑java的工具应该用eclipse,eclipse是一个开源软件,现在逐步取代jbuilder被广泛采用。具体的设置方式是,点击windows菜单下的show view子菜单,然后选择db browser,弹出的对话框中按要求设置数据库驱动,连接好了以后点击连接数据库,就可以看到数据库中的数据了。这种方式的有点是使用是在eclipse中的db browser下就可以看到数据库,而不用sql2000数据库。
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 运行代码提示"ClassNotFoundException"错误
如果提示"ClassNotFoundException",那一定是 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 该段代码拼写有误,或者是SQL Server 2000 Driver For JDBC Lib目录下的三个.jar文件未加入到CLASSPATH中。将驱动包加入classpath中可以解决。假设SQL Server for JDBC 驱动程序安装在d:jdbc,则classpath应该设置如下:
Classpath=.;…;d:jdbclib; :jdbclibmssqlserver.jar; :jdbclibmsutil.jar; :jdbclibmsbase.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学习者作为参考。
参考文献
[1] 武延军,黄飞跃.精通JSP编程技术[M].北京:人民邮电出版社,2005.
[2]朱友芹,陈圣琳.网站规划与建设[M].北京:电子工业出版社,2006.
[3]肖必武,用JSP构建动态网站[J]. 现代电子技术,2007 年第三期.
作者简介: 庄生虎,男,1979年生,陕西志丹人,陕西广电网络传媒股份有限公司延安分公司任职,从事数据库应用网络维护工作。