JSP与SQL Server 2005的连接①
2009-01-06孙振亚
孙振亚
[摘 要]JSP是当今比较流行的动态网页开发技术,数据库对动态网站来说是最重要的部分,JDBC是应用程序和数据库沟通的桥梁,本文主要介绍了JSP中如何通过JDBC技术来实现对SQL Server 2005的访问。
[关键词]JSP JDBC-ODBC桥 JDBC SQL Server 2005
[中图分类号]TP311[文献标识码]A[文章编号]1007-9416(2009)11-0056-02
[Abstract]JSP is a more popular technique in developping dynamic web. It is very importment for dynamic web supported of database. JDBC is connecter of appliction program to database. This paper discusses the method of visiting SQL Server 2005 through JSP.
[Keywords]JSP JDBC-ODBC Bridge JDBC SQL Server 2005
1 引言
JSP(Java Server Page)是Sun公司推出的新一代动态网站开发语言,JSP技术是由Java语言作为脚本语言,在传统的HTML文件中加入Java程序片段(Scriptlet)和JSP标记(tag)就构成了JSP网页,扩展名为.JSP。JSP可以在servlet和JavaBean的支持下,完成功能强大的动态网站程序的开发。而数据库的支持对动态网站来说是最重要的部分,直接关系到网站的更新和交互性,随着SQL Server 2005数据库使用的普及,在JSP中使用基于JDBC驱动程序访问SQL Server 2005数据库已经是十分必要的工作。
2 JSP连接SQL Server 2005
要在JSP页面中访问数据库,首先要实现JSP与数据库的连接,现在最常用的是使用JDBC技术实现对数据库的连接。JDBC是一种用于执行SQL语句的JavaAPI,它由一组用Java语言编写的类和接口组成,JDBC提供了一组标准的应用程序设计接口,使开发人员可以使用纯Java API来编写数据库应用程序。简单地说,JDBC可做三件事:与数据库建立连接、发送 sql 语句并处理结果。
2.1 DriverManager类
DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。该类负责加载、注册JDBC驱动程序,管理应用程序和已注册的驱动程序的连接。对于简单的应用程序,只需直接使用该类的方法getConnection进行连接即可,格式如下:
DriverManager. getConnection(url,“用户名”,“密码”)
2.2 利用JDBC技术连接数据库的常用方法
数据库连接对动态网站来说是最为重要的部分,JSP中连接数据库的技术是JDBC(Java Database Connectivity)。很多数据库都带有JDBC驱动程序,JSP程序就通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作。
2.2.1 JDBC-ODBC桥连接数据库
SUN公司开发了JDBC-ODBC桥,通过JDBC-ODBC桥,Java程序访问带有ODBC驱动程序的数据库。
JDBC-ODBC桥提供了从JDBC到ODBC的转换,用于访问ODBC数据源。JDBC使用了本地的ODBC方法。 Sun公司提供的JDBC-ODBC桥可以访问支持ODBC的数据库,用户只要设置好ODBC数据源,再由JDBC驱动程序转换为JDBC接口供应用程序使用即可。
连接到SQL Server 2005数据库,首先应配置数据源,然后使用JDBC-ODBC桥进行数据库的连接。
*数据源的配置:
打开控制面板窗口,选择管理工具中的数据源(ODBC),打开ODBC数据源管理器,选择“系统DSN”选项卡,单击添加;在打开的“创建数据源”对话框的“选择您想为其安装数据的驱动程序”列表框中,选择“SQL Server”,然后单击完成;
在“创建到SQL Server的新数据源”对话框中,将数据源的名称设置为DataShop(名字可为其它),该名字为数据源的名称,并不一定是数据库的名称,选择SQL Server数据库服务器的名称时,可以选择本机(local),然后单击下一步;在选择登录的方式的界面中,使用默认的方式,也可以根据需要选择SQL Server登录方式,并指定用户名,本文采用第二种方式,ID为sa,密码为sa,然后单击“下一步”;在选择数据库的界面中,指定数据源所对应的数据库(本文为jsp_db),然后单击“下一步”;
在完成并进行数据源的测试成功后。“在ODBC数据源管理器”对话框的“系统DSN”选项卡中即可看到新添加的数据源DataShop。这时已完成了数据源的设置。
* 连接到数据库SQL Server 2005的代码段
......
Connection conn=null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String strConn="jdbc:odbc:shopData";
String strUser="sa"; // sa数据库登录时的用户名
String strPassword="sa"; // sa数据库登录时的密码
conn=DriverManager.getConnection(strConn,strUser,strPassword);
out.println("
JDBC-ODBC桥连接数据库成功!
");}
catch(Exception e)
{
out.println("
JDBC-ODBC桥连接数据库失败!
");}
......
测试中如看到“JDBC-ODBC桥连接数据库成功!”的字样,则表示使用JDBC-ODBC桥连接数据库成功。
2.2.2 专用JDBC驱动程序连接数据库
ODBC驱动,在很多情况下也即数据库的客户端,必须加载到客户机。因而,它适用于不重要的应用或者没有其他JDBC驱动可用的情况,大多数的应用还是采用JDBC驱动程序来连接数据库。
*下载安装SQL Server 2005的JDBC驱动
到微软网站下载SQL Server的JDBC驱动程序包,安装在c盘program files 下Microsoft SQL Server 2005 JDBC Driver文件夹内,接着配置classpath,在原有基础上添加C:Program FilesMicrosoft SQL Server 2005 JDBC Driversqljdbc_1.1chs表明了sqljdbc.jar所在的目录。
*连接到数据库SQL Server 2005的代码段
......
Connection conn=null;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String strConn="jdbc:sqlserver://localhost:1433;DatabaseName=jsp_db";
String strUser="sa";//根据你自己设置的数据库连接用户进行设置
String strPassword="sa"; // 根据你自己设置的数据库连接密码进行设置
conn=DriverManager.getConnection(strConn,strUser,strPassword);
conn=DriverManager.getConnection(strConn,strUser,strPassword);
out.println("
JDBC专用驱动程序连接数据库成功!
");}
catch(Exception e)
{
out.println("
JDBC专用驱动程序连接数据库失败!
");}
......
测试中如看到“JDBC专用驱动程序连接数据库成功!”的字样,则表示JDBC专用驱动程序连接数据库成功。
* 和连接数据库SQL Server2000代码的区别
如果你以前用JDBC连接SQL Server 2000的话就要注意了,
在SQL Server 2000 中加载驱动和URL路径的语句是:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver);
URL = " jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jsp_db";
否则,在连接过程中会出现找不到JDBC驱动程序的错误。
3 连接到数据库SQL Server 2005常见问题
在连接数据库SQL Server 2005 Express时,经常会出现“com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。”的错误,这主要是该版本的服务器默认是禁用的并且端口号没有配置,所以要重新设置TCP/IP协议启动,具体如下:
(1)打开SQL Server Configuration Manager
(2)转到SQL Server 2005 Network Configuration->Protocols for SQLEXPRESS
(3)将TCP/IP设置为Enabled(启用)
(4)双击TCP/IP项,转到IP Addresses页
(5)IP All中设置TCP Port为1433
(6)重新启动服务
4 插入汉字到数据库SQL Server2005时乱码的处理
由于字符编码的原因,插入数据到数据库时,汉字会变为“?”,通过以下方法可以解决此问题。
4.1 更改属性中的排序规则
(1)右击你所建的数据库,点击“属性”,选择“选项”并点击。将其中的设置为:Chinese_PRC_CI_AS(选择下拉列表框即可设置),然后“确定“。
(2)将你表中汉字字段的数据类型设置为nvarchar型或ntext型,设置前最好先将表中的数据全部删除。(不要使用varchar或text型,因为它们只会继续使你的数据乱码)。
(3)设置好后,关闭服务器,再重新启动,就可生效了。
4.2 在SQL语句中直接加N字符
如使用类似insert into student(stu_name) values (N'+userName+')这种格式的SQL语句,也能够将插入数据库的汉字正常显示。
5 结语
WEB与数据库互联是当今WWW技术和数据库技术发展的交叉点,是日益增长的信息处理需求推动下产生的必然结果。JSP以其动态、高效、简洁及跨平台性,已被广泛地应用于电子商务、电子政务等系统中,开发基于B/S(Browse/Server浏览器/服务器)架构的软件系统,JDBC技术作为两者沟通的桥梁,在实际开发中,选择合适的连接方式将起到事半功倍的作用。
[参考文献]
[1] 赵增敏.JSP动态网站开发[M].电子工业出版社,2008年.
[2] 刘志成.JSP程序设计案例教程[M].清华大学出版社,2007.
[3] http://blog.csdn.net.
[4] http://q.yesky.com.
[5] http://www.diybl.com.