第6章JDBC数据库访问技术本章主要内容•MSSQLServer2000的安装•JDBC驱动程序的类型及安装方法•常用的JDBCAPI接口和类•使用JDBC进行增、删、改、查的基本方法•预编译SQL语句和存储过程的调用•JDBC事务处理•连接池与数据源•数据库与Excel报表的动态生成6.1MSSQLServer2000的安装6.1.1MSSQLServer2000概述SQLServer2000是Microsoft公司于2000年10月推出的一个关系型数据库管理系统,有以下几个版本:•SQLServer2000企业版(EnterpriseEdition)•SQLServer2000标准版(StandardEdition)•SQLServer2000个人版(PersonalEdition)•SQLServer2000开发人员版(DeveloperEdition)6.1.2SQLServer2000个人版的安装•在安装前,建议以Windows的administrator管理员身份登录操作系统,用其它Windows帐户登录可能因权限不足而导致无法连接数据库。•在光驱中放入SQLServer2000个人版的安装光盘,光盘一般会自动运行,如图6-1示。单击界面上的第一项【安装SQLServer2000组件】。图6-1SQLServer2000个人版安装启动界面图6-2安装组件界面•在图6-2的安装组件界面中,单击选中第一项【安装数据库服务器】。•在图6-3的欢迎对话框中,单击【下一步】按钮。•在图6-4的计算机名对话框中,选择【本地计算机】,再单击【下一步】按钮。•在图6-5的安装选择对话框中,选择【创建新的SQLServer实例或安装客户端工具】,再单击【下一步】按钮。图6-3欢迎对话框图6-4计算机名对话框在图6-6的用户信息对话框中,姓名、公司取默认值,单击【下一步】按钮。图6-5安装选择对话框图6-6用户信息对话框•在图6-7的软件许可协议对话框中,单击【是】按钮。•在图6-8的安装定义对话框中,选择【服务器和客户端工具】,单击【下一步】按钮。图6-7软件许可证协议图6-8安装定义对话框•在图6-9的实例名对话框中,取【默认】项,单击【下一步】按钮。•在图6-10的安装类型对话框中,取【典型】项,单击【下一步】按钮。图6-9实例名对话框图6-10安装类型对话框•在图6-11的服务器帐户对话框中,取【对每个服务使用同一帐户。自动启动SQLServer服务】项,服务设置中取【使用本地系统帐户】项,单击【下一步】按钮。图6-11服务帐户对话框•在图6-12的身份验证模式对话框中,选择【混合模式(Windows身份验证和SQLServer身份验证)】项,添加sa登录密码选择【空密码(不推荐)】项,单击【下一步】按钮。•最后出现复制文件对话框,单击【下一步】按钮开始复制文件,直到安装完成。图6-12身份验证模式•安装SQLServer2000的补丁在WindowsXP以上的操作系统中安装SQLServer2000以后,数据库系统还不能正常工作,需要下载并安装SQLServer2000sp4以上的补丁。补丁可在微软公司的官方网站=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5&displaylang=zh-cn中下载。补丁程序是一个压缩包,默认自解压至“C:\SQL2KSP4”文件夹下,运行c:\SQL2KSP4\setup.bat批处理程序安装补丁。•启动SQLServer2000数据库服务器•使用WindowsXP的菜单:【开始】→【程序】→【MicrosoftSQLServer】→【服务管理器】,在图6-13的服务管理器窗口中,单击【开始/继续】按钮,并选择【当启动OS时自动启动服务】,最后关闭窗口。图6-13服务管理器窗口4、样例数据库SQLServer2000自带两个供学习SQL语句用的样例数据库,一个是Northwind数据库,另一个pubs数据库。Northwind数据库模仿罗斯文贸易公司的业务模型,罗斯文公司专门经营世界各地风味食品的进出口业务。pubs数据库用于模拟一个图书出版社的业务模型。6.2JDBC概述•6.2.1ODBC概述•ODBC是Microsoft公司推出的开放式数据库接口。应用系统通过SQL结构化查询语言访问数据管理系统(DBMS)。ODBC接口对不同的DBMS提供半透明的存取,这样开发人员便能在虚拟数据库上展开工作,通过加载的驱动程序将逻辑结构映射到具体的DBMS。•6.2.2JDBC概述•JDBC(JavaDatabaseConnectivity)是Java环境中访问SQL数据库的一组API。它包括一些用Java语言编写的类和接口,能更方便地向任何关系型数据库发送SQL命令。•JDBC提供给程序员的编程接口由两部分组成:一是面向应用程序的编程接口JDBCAPI,它是供应用程序员用;二是支持底层开发的驱动程序接口JDBCDriverAPI,它是供商业数据库厂商或专门的驱动程序生产厂商开发JDBC驱动程序用。当前流行的大多数数据库系统都推出了自己的JDBC驱动程序。6.2.3JDBC驱动程序的类型•JDBC驱动程序大致分为四种类型:1、JDBCType-1类型1的JDBC驱动程序是将JDBCAPI映射到另一种数据库的API上。JDBC-ODBC桥属于类型1的JDBC驱动程序。2、JDBCType-2这类JDBC驱动程序有一部分是用Java语言编写,另外一部分是用本地代码编写,一般也称之为JDBCNativeAPI。3、JDBCType-3类型3的JDBC驱动程序也叫JDBCNetworkBridge驱动程序,驱动程序是使用Java语言编写,具有跨平台特性。4、JDBCType-4类型4的JDBC驱动程序也是用纯Java语言编写,也具有跨平台特性,一般称之为PureJavaJDBCDriver。6.2.4JDBCType-4驱动程序的安装方法•将JDBCType-4驱动程序sqljdbc.jar文件复制到C:\tomcat\common\lib文件夹中,重启Tomcat后,JSP/Servlet中就可以使用此驱动程序。•在Tomcat下安装其它数据库的JDBCType-4驱动程序的基本方法也是将*.jar驱动程序文件复制到C:\tomcat\common\lib文件夹中。6.3JDBCAPI中关键的类和接口•6.3.1java.sql包•JDBCAPI的核心部分在java.sql包中,这个包提供使用Java编程语言访问并处理存储在数据源中数据的API。•6.3.2javax.sql包•javax.sql包提供了通过数据源访问数据库的API,这个包是java.sql包的补充,它从1.4版本开始包含在JDK中,支持连接池和数据源技术,支持分布式事务处理。•6.3.3常用的JDBCAPI类和接口•1、java.sql.Driver接口•这个接口的实现类是某种数据库的一个驱动程序类,用于初始化驱动程序。•本书所使用的MSSQLServer2000的JDBCType-4驱动程序的类名为:•com.microsoft.sqlserver.jdbc.SQLServerDriver•要加载此驱动程序,代码类似于:•Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);•Type-1类型的JDBC-ODBC的驱动程序名为:•sun.jdbc.odbc.JdbcOdbcDriver•java.sql.DriverManager类•DriverManager类的主要作用是管理注册到DriverManager中的JDBC驱动程序,并根据需要使用JDBC驱动程序建立与数据库服务器的网络连接。类中常用的方法有:(1)publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException•例如,取得SQLServer2000连接的代码为:•Stringurl=jdbc:sqlserver://127.0.0.1:1433;databaseName=pubs;•Stringuser=sa;•Stringpw=null;•Connectioncon=DriverManager.getConnection(url,user,pw);•如果要用Type-1类型的JDBC-ODBC驱动程序连接SQLServer2000的pubs数据库,首先要在Windows的控制面板中建立一个名为“mypubs”的ODBC数据源,获得连接代码如下:•Connectioncon=DriverManager.getConnection(jdbc:odbc:mypubs,,);(2)publicstaticConnectiongetConnection(Stringurl)throwsSQLException•对于SQLServer2000,url连接串可写为:•Stringurl=jdbc:sqlserver://127.0.0.1:1433;databaseName=pubs;user=sa;password=;•Connectioncon=DriverManager.getConnection(url);3、java.sql.Connection接口一个Connection对象表示一个数据库连接,接口中常用的方法有:(1)StatementcreateStatement(intresultSetType,intresultSetConcurrency)throwsSQLException•作用:创建一个Statement对象发送SQL语句给数据库服务器,两个形参指定ResultSet对象的类型和并发性,含义如下:•第一个形参指明结果集游标的类型,通过游标来读取结果集中的记录。SQLServer支持四种游标类型:静态游标、动态游标、只进游标和键集驱动游标。•第二个形参指明结果集的并发性,并发控制是指多名用户同时更新行时,用于保护数据库完整性的技术。不正确的并发可能导致脏读、幻读和不可重复读等问题。ResultSet中并发控制常用的取值主要有两个:一个是ResultSet.CONCUR_READ_ONLY,它是只读的,不允许通过游标进行更新,并且不对组成结果集的行锁定。第二个取值是ResultSet.CONCUR_UPDATABLE,它是乐观读写,不锁定行。(2)StatementcreateStatement()throwsSQLException•作用:创建一个Statement对象来发送SQL语句给数据库服务器,默认参数:结果集的类型是ResultSet.TYPE_FORWARD_ONLY,结果集的并发模式是ResultSet.CONCUR_READ_ONLY。(3)PreparedStatementprepareStatement(Stringsql,intresultSetType,intresultSetConcurrency,intresultSetHoldability)throwsSQLException•作用:给一条带参数的SQL语句生成PreparedStatement对象(SQL语句预编译对象),中的第一个形参是带“?”号参数的预编译SQL语句,例如:•select*fromtitleswhereprice?(4)PreparedStatementprepareStatement(Stringsql)throwsSQLException•作用:为一条带参数的SQL语句生成PreparedStatement对象(SQL语句预编译对象),第一个形参是带“?”号参数的SQL语句,默认参数:结果集的类型是ResultSet.