Java第十一章数据库应用基础.ppt
Java程序设计程序设计数据库应用基础数据库应用基础(JDBC)内容内容JDBC简介简介JDBC驱动器驱动器使用使用JDBC的七个步骤的七个步骤JDBC简介简介JDBC(JavaDataBaseConnectivity)是基于是基于Java的、用于访问关系数据库的类的、用于访问关系数据库的类库。库。通过通过JDBCAPI可以使用相同的可以使用相同的Java语法访语法访问大量的各种各样的问大量的各种各样的SQL数据库。数据库。JDBC类库存在于包类库存在于包java.sql中。中。JDBC并不试图将并不试图将SQL语法也标准化。语法也标准化。JDBC的组成的组成n nJDBCAPIJDBCAPIn n纯纯纯纯JavaJava的应用编程接口。的应用编程接口。的应用编程接口。的应用编程接口。n nJDBCDriverManagerJDBCDriverManagern n它与指定厂商的它与指定厂商的它与指定厂商的它与指定厂商的driversdrivers相连,相连,相连,相连,而由这些而由这些而由这些而由这些driversdrivers实现与数据实现与数据实现与数据实现与数据库的通信。库的通信。库的通信。库的通信。使用使用JDBC的七个步骤的七个步骤装载驱动(装载驱动(driver)定义连接(定义连接(Connection)URL与数据库建立连接与数据库建立连接创建创建Statement对象对象执行数据库查询执行数据库查询处理查询结果处理查询结果关闭连接关闭连接步骤步骤1:装载驱动(:装载驱动(driver)装载驱动(装载驱动(driver)Class.forName(“驱动程序完全限定类名驱动程序完全限定类名);n n驱动程序类的一个驱动程序类的一个驱动程序类的一个驱动程序类的一个staticstatic代码块自动生成驱动代码块自动生成驱动代码块自动生成驱动代码块自动生成驱动程序的对象,并将其注册到程序的对象,并将其注册到程序的对象,并将其注册到程序的对象,并将其注册到JDBCJDBC驱动程序管驱动程序管驱动程序管驱动程序管理器中。理器中。理器中。理器中。tryClass.forName(connect.microsoft.MicrosoftDriver);/Class.forName(oracle.jdbc.driver.OracleDriver);/Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catchClassNotFoundExceptioncnfe)System.out.println(Errorloadingdriver:cnfe);步骤步骤2:定义连接(:定义连接(Connection)URL该该URL给出了数据库服务器的位置给出了数据库服务器的位置URL格式:格式:jdbc:协议协议:(数据源或主机名、端口名和数数据源或主机名、端口名和数据库名)据库名)n n具体格式的定义在特定驱动程序文档中定义具体格式的定义在特定驱动程序文档中定义具体格式的定义在特定驱动程序文档中定义具体格式的定义在特定驱动程序文档中定义Stringhost=;StringdbName=someName;intport=1234;StringoracleURL=jdbc:oracle:thin:+host+:+port+:+dbName;StringmsAccessURL=“jdbc:odbc:”+dbName;步骤步骤3:与数据库建立连接:与数据库建立连接使用使用DriverManager类的类的getConnection方法获得与数据库的连接方法获得与数据库的连接n ngetConnectiongetConnection方法的声明:方法的声明:方法的声明:方法的声明:n n注意,该方法有可能抛出注意,该方法有可能抛出注意,该方法有可能抛出注意,该方法有可能抛出SQLExceptionSQLExceptionn n建立连接示例:建立连接示例:建立连接示例:建立连接示例:Stringusername=jay_debesee;Stringpassword=secret;Connectionconnection=DriverManager.getConnection(oracleURL,username,password);publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException步骤步骤3:与数据库建立连接(续):与数据库建立连接(续)利用获得的利用获得的connect对象,可以进一步获得对象,可以进一步获得数据库的相关信息:数据库的相关信息:DatabaseMetaDatadbMetaData=connection.getMetaData();StringproductName=dbMetaData.getDatabaseProductName();System.out.println(Database:+productName);StringproductVersion=dbMetaData.getDatabaseProductVersion();System.out.println(Version:+productVersion);步骤步骤4:创建:创建Statement对象对象使用语句使用语句Statementstatement=connection.createStatement();步骤步骤5:执行数据库查询:执行数据库查询若需改变数据库内的数据,如,执行若需改变数据库内的数据,如,执行UPDATE,INSERT,或者或者DELETE等等SQL指指令,则应使用令,则应使用Statement接口中的另外一个接口中的另外一个方法:方法:intexecuteUpdate(Stringsql)Stringquery=SELECTcol1,col2,col3FROMsometable;ResultSetresultSet=statement.executeQuery(query);步骤步骤6:处理查询结果:处理查询结果ResultSetResultSet接口的接口的接口的接口的nextnext方法在结果集中每次一行方法在结果集中每次一行方法在结果集中每次一行方法在结果集中每次一行地移动。地移动。地移动。地移动。ResultSetResultSet提供了各种提供了各种提供了各种提供了各种getXxxgetXxx方法,以获得不同方法,以获得不同方法,以获得不同方法,以获得不同javajava类型的返回结果,如类型的返回结果,如类型的返回结果,如类型的返回结果,如getIntgetInt,getStringgetString等,等,等,等,它们均以列名或列索引为参数;注意列索引从它们均以列名或列索引为参数;注意列索引从它们均以列名或列索引为参数;注意列索引从它们均以列名或列索引为参数;注意列索引从1 1开开开开始而不是从始而不是从始而不是从始而不是从0 0开始。开始。开始。开始。while(resultSet.next()System.out.println(resultSet.getString(1)+resultSet.getString(2)+resultSet.getString(3);步骤步骤7:关闭连接:关闭连接由于关闭连接的开销常常很大,因此若还由于关闭连接的开销常常很大,因此若还有额外的数据库操作还要执行,则应推迟有额外的数据库操作还要执行,则应推迟该关闭动作。该关闭动作。connection.close();JDBC示例示例建立数据库建立数据库n n使用使用使用使用ACCESSACCESS建立数据库建立数据库建立数据库建立数据库studentstudent;n n字段:字段:字段:字段:namename,numbernumber(PKPK)创建数据源创建数据源student执行数据库操作(增加学生、查询学生)执行数据库操作(增加学生、查询学生)代码代码n nBean:Student.javaBean:Student.javan nHTML:student.htmlHTML:student.htmln nJSP:AddStudent.jsp,SearchStudent.jspJSP:AddStudent.jsp,SearchStudent.jsp运行结果运行结果