您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第12章(2)JDBC简介与数据库访问
JDBC简介与数据库访问1JDBC简介与数据库访问•JDBC是Java数据库连接API。JavaDataBaseConnectivity•JDBC是Java应用程序与数据库的沟通桥梁,通过JDBC所提供的API,Java程序能很容易连接数据库。•简单的说,JDBC能完成四件事:–与一个数据库建立连接,有两种方法:•通过建立一个JDBC-ODBC桥接器,来访问数据库•JDBC直接加载数据库驱动程序,来访问数据库–向数据库发送SQL语句–处理数据库返回的结果–断开连接JDBC简介与数据库访问2JDBCAPI•JDBC与具体的某种数据库连接时需要装载与之对应的驱动程序,不过此种驱动程序不需要我们自己去装载,而是直接通过JDBCAPI类库里的类来自动装载驱动程序。•这些API类库一般都集中在java.sql包中。•java.sql包中还包含了用于实现与数据库连接的其它功能的类,包括与数据库建立连接、传送查询、接受查询结果等。JDBC简介与数据库访问3JDBC要做的四件事:与数据库建立连接发送SQL语句处理返回的结果断开连接处理返回的结果发送SQL语句与数据库建立连接纵览JDBCAPIClass类DriverManager类Connection类Statement类由Connection类的createStatement()方法产生。PreparedStatement类由Connection类的PreparedStatement()方法产生。CallableStatement类由Connection类的prepareCall()方法产生。ResultSet类由Statement类或PreparedStatement类的executeQuery()方法产生。JDBC简介与数据库访问4JDBC要做的四件事:1.建立连接2.发送SQL语句3.返回的结果4.断开连接DriverManager类•DriverManager类用于装载驱动程序。它所有的成员都是静态成员,所以在程序中无须进行实例化,直接通过类名就可以访问它。•DriverManager的主要用途是通过getConnection方法来取得Connection对象引用。其格式为:ConnectiongetConnection(Stringurl,Stringuser,Stringpassword);其中各参数含义如下:–url:指明数据库定向位置,其具体格式由数据库驱动程序约定,不同的数据库格式不同。–user:登录数据库的用户–password:登录数据库的密码JDBC简介与数据库访问5class.forName(className)方法•使用java.lang.Class类的forName()方法可指定所要用的驱动程序。•forName的参数格式如下:class.forName(“[公司名].[数据库名].[驱动程序名]”);•如:class.forName(“oracle.jdbc.driver.OracleDriver”);class.forName(“com.mysql.jdbc.Driver”);JDBC要做的四件事:1.建立连接2.发送SQL语句3.返回的结果4.断开连接JDBC简介与数据库访问6常见数据库的连接方法class.forName(driverName);Connectioncon=DriverManager.getConnection(url,user,pw);driverName-驱动程序名url-JDBC的URLORACLE数据库driverName=“oracle.jdbc.driver.OracleDriver”;url=“jdbc:oracle:thin:@localhost:1521:orcl”;SQLSERVER数据库driverName=“com.microsoft.jdbc.sqlserver.SQLServerDriver”;url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;DB2数据库driverName=com.ibm.db2.jdbc.app.DB2Driver;url=jdbc:db2://localhost:5000/sample;通过ODBC桥接器driverName=“sun.jdbc.odbc.JdbcOdbcDriver;url=jdbc:odbc:Customers;JDBC简介与数据库访问7如装载一个JDBC-ODBC桥驱动程序,并连接一个student数据源,数据库登录用户为abc,密码为111,其实现如下:class.forName(“sun.jdbc.odbc.jdbcodbcDriver”);Connectioncon=DriverManager.getConnection(“jdbc:odbc:student”,”abc”,”111”);getConnection()方法返回一个连接类对象,假如连接成功,则此对象是指向数据库的一个连接;假如连接失败,此对象为null。JDBC简介与数据库访问8Connection类•Connection类是通过DriverManager.getConnection()方法取得的,表示驱动程序提供的与数据库连接的对象。•它同时还可用于管理此连接,如向数据库发送查询和接收数据库的查询结果都是在它基础上的,它还可以在完成同数据库的连接的所有任务后关闭此连接。JDBC要做的四件事:1.建立连接2.发送SQL语句3.返回的结果4.断开连接JDBC简介与数据库访问9Connection类的主要方法StatementcreateStatement():新建一个Statement对象PreparedStatementprepareStatement(Stringsql):新建一个PreparedStatement对象setAutoCommit(booleansutoCommit):设置此连接是否为自动提交方式voidclose():关闭同数据库的连接并释放所占用的JDBC资源booleanisClosed():判断是否还与数据库连接着DatabaseMetaDatagetMetaData():返回DatabaseMetaData对象,此对象包括表、sql格式和后备进程描述信息。voidsetReadOnly(booleanreadOnly):设置连接为只读……JDBC简介与数据库访问10Statement类•Statement类用来管理与在数据库中查询相关的一些事情,它的对象由Connection类的createStatement()方法产生,如:Statementstatement=con.createStatement();•其主要方法有:–ResultSetexecuteQuery(Stringsql):返回一个静态的sql查询结果–intexecuteUpdate(Stringsql):执行一个insert、update或delete的SQL命令,返回被影响行数–voidclose():关闭同数据库的连接和占用的JDBC资源–intgetMaxRows():返回查询结果中所允许包含的最多行数–voidsetMaxRows():设置查询结果中所允许包含的最多行数–voidcancel():取消一个正在执行的查询–……JDBC要做的四件事:1.建立连接2.发送SQL语句3.返回的结果4.断开连接JDBC简介与数据库访问11JDBC要做的四件事:1.建立连接2.发送SQL语句3.返回的结果4.断开连接PreparedStatement•PreparedStatement类的作用和Statement类相似。当需要进行一批类似的查询时,可以用PreparedStatement类来简化查询。•它的对象由Connection类的PreparedStatement()方法产生,如:PreparedStatementpreparedStatement=con.PreparedStatement(“select*fromstudentwhereage=?andscore=?”);preparedStatement.setString(1,21);preparedStatement.setString(2,60);ResultSetresult1=preparedStatement.executeQuery();preparedStatement.setString(1,22);preparedStatement.setString(2,90);ResultSetresult2=preparedStatement.executeQuery();JDBC简介与数据库访问12CallableStatement•CallableStatement用于执行存储过程,继承PreparedStatment接口。•它的对象由Connection类的prepareCall()方法产生。JDBC要做的四件事:1.建立连接2.发送SQL语句3.返回的结果4.断开连接JDBC简介与数据库访问13使用CallableStatement对象执行存储过程CallableStatementstmt=con.prepareCall(“{callMyProcedure(?,?,?)}”);stmt.setInt(1,77);stmt.setString(2,”Ruby”);stmt.setInt(3,45);stmt.executeUpdate();/*存储过程MyProcedure的SQL脚本*/CREATEPROCEDUREMyProcedure(snINNUMBER,nameINCHAR,ageINCHAR)ASBEGININSERTINTODEPTVALUES(sn,name,age);END;/JDBC简介与数据库访问14ResultSet类•ResultSet类用来装载查询结果,并可以通过它的不同方法提取查询结果;•Statement、PreparedStatement对象用executeQuery()方法都将产生ResultSet对象。JDBC要做的四件事:1.建立连接2.发送SQL语句3.返回的结果4.断开连接JDBC简介与数据库访问15ResultSet类的常用方法StringgetString(intcolumnIndex);StringgetString(StringcolumnName);intgetInt(intcolumnIndex);intgetInt(StringcolumnName);java.io.InputStreamgetBinaryStream(StringcolumnName);Booleannext();Booleanprevious();intgetRow();voidclose();ResultSetMetaDatagetMetaData();Booleanabsolute(introw);JDBC要做的四件事:1.建立连接2.发送SQL语句3.返回的结果4.断开连接JDBC简介与数据库访问16JDBC要做的四件事:与数据库建立连接发送SQL语句处理返回的结果断开连接处理返回的结果发送SQL语句与数据库建立连接纵览JDBCAPI两个步骤建立连接:1、使用java.lang.Class类的forName()方法指定所要用的驱动程序。2、使用DriverManager的getConnection()方法来取得Connection对象引用。Statement类用以管理与在数据库中查询相关的一些事情;由Connection类的createStatement()方法产生。PreparedStatement类用以进行一批较类似的查询;由Connection类的PreparedStatement()方法产生。CallableStatement类用以执行存储过程;由C
本文标题:第12章(2)JDBC简介与数据库访问
链接地址:https://www.777doc.com/doc-3472907 .html