1、第四章 JDBC技术第4章 JDBC技术1. 建数据库2.表3.设置登录名(关系表)4.用登录名连接数据库5.在JSP中操作 (1) 新建工程后,把sqljdbc4.jar文件放到web-inf中的lib中。 (2) 在sqljdbc4.jar点右键,选择add. (3)按jsp的方法去做网页。在页面开头写:在body的下面加载数据驱动连接后面就可以写sql语句如delete,insert,update这些语句用executeUpdate(String sql)来执行,这个语句的返回值为intselect语句要用executeQuery(String sql)来执行,他的返回值为ResultS
2、et输出记录要用while, getString(field的列号)完毕后关闭所有对象executeUpdate(); 理解JDBC应用程序编程接口; 掌握使用纯Java驱动程序操作数据库的编程方法; 掌握对数据的增加、删除、修改和查询编程技术; 查询记录的分页面显示; 数据库连接池编程技术。To Learn 1 JDBC概述 2 JDBC应用程序接口简介 3 利用JDBC访问数据库 4 数据库操作案例例子: 数据库连接 您的第一个字段内容为: 您的第二个字段内容为: 您的第三个字段内容为: 您的第四个字段内容为: 结果数据库与表4.1 什么是JDBCJDBC是Java数据库连接(Java D
3、ata Base Connectivity)技术的简称,指Java同许多数据库之间连接的一种标准。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的JavaAPI,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC最大特点:独立于具体的关系数据库。JDBC API定义了一些JAVA类接口,分别实现与数据库的连接(connections),发送SQL语句(SQL Statements),获取结果集(result sets)以及其它数据库对象,从而使java程序能方便与数据库交互并处理所得的结果。JDBC的API放在java.sql,javax.sql等中。JAVA
4、程序应用JDBC的步骤如下:(1) 注册加载一个数据库驱动程序;Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); (2) 创建数据库连接(connection)String url=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=reg1; /db表示你 的数据库名String username=zyc; /刚才新建SQL的用户名String password=zyc;/刚才新建SQL的/密码Connection conn=DriverManager.getConnection(ur
5、l,username,password); (3) 创建一个 statement(发送)Statement stmt=conn.createStatement(); (4) 数据库执行sql语句用sql server2008中的语句,定义为String(5) 用户程序处理sql语句的结果(包括结果集ResultSet)Delete,update,insert返回值为int,excuteUpdate(sql)Select返回值为ResultSet,executequery(sql)(6) 关闭连接(connection)等资源先后次序,开始是select的对象其次是Statement对象,最后是
6、connection对像。简单地说,JDBC能够完成下列四件事: 与一个数据库建立连接(connection)。 向数据库发送SQL语句(statement)。 处理数据库返回的结果(resultset)。 关闭连接(close)4.2 JDBC的构成1.JDBC API:定义了标准接口,无论编写Mysql还是Oracle等数据库程序,这些接口是一致的。2.JDBC数据库驱动程序(1)DrvierManager类提供管理一组JDBC驱动程序所需要的基本服务,可以跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。该类的常用方法有:getConnection和forName方法。publ
7、ic static Connection getConnection(String url,String user,String password)public static Class forName(String className)对getConnection函数中的参数解释: url参数的命名方法:url由3部分组成,各部分间用冒号分隔,如下所示: jdbc: 其中:jdbc协议名称。在JDBC URL中的协议总是jdbc。 驱动程序名或数据库连接机制的名称。如“odbc”,它是用于指定ODBC风格的数据库资源名称的 URL而保留的。 一种标识数据库的方法。子名称可以依不同的子协议而变
8、化。它还可以有子名称的子名称(含有驱动程序编程人员所选的任何内部语法)。使用子名称的目的是为定位数据库提供足够的信息。DrvierManager类的使用法:(i)加载驱动例如:加载MysqlClass.forName(com.mysql.jdbc.Driver);加载sql server2008Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);(ii)与数据库建立连接DriverManager.getConnection(String url,String user,String password);String url=j
9、dbc:sqlserver:/127.0.0.1:1433;DatabaseName=jlp1; (2) Connection接口Connection接口是java.sql包中最重要的接口。Connection对象代表与数据库的连接。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。数据库连接一旦建立,就可用来向它所涉及的数据库发送SQL语句。Connection的作用是创建向数据库发送SQL语句的三个接口。这三个接口分别是: Statement接口 PreparedStatement接口 CallableStatement接口。Connection接口提供了多个同名但是参
10、数不同的方法创建以上的三个接口。例如:public Statement createStatement();public Statement createStatement(int resultSetType,int resultSetConcurrency);其中:参数resultSetType指返回记录集的类型resultSetConcurrency指发送的SQL语句的权限常用的一些方法:boolean isClosed():用于判断Connection对象是否已经被关闭;void commit():用于提交SQL语句,确认从上一次提交以来所进行的修改;void close():断开连接,
11、释放资源;void rollback():取消SQL语句,取消当前事务中进行的修改。DatabaseMetaData getMetaData():获取一个DatabaseMetaData对象。(3) Statement接口Statement接口对象创建完毕后,主要使用以下方法:public ResultSet executeQuery(String sql):用于执行产生单个结果集的语句,如select。public int executeUpdate(String sql):用于执行insert、 update或delete语句以及SQL DLL(数据定义)语句。当执行insert、upda
12、te或delete语句时将返回一个整数,用于表示受影响的行数,返回结果为0时表示操作失败;当执行SQL DLL语句,如create table时,由于它不操作行,返回值将总为0。public boolean execute(String sql):用于执行返回多个结果集、多个更新计数或二者结合的SQL语句。public int executeBatch():用于执行几个SQL语句。Statement接口使用addBatch(String sql)方法将几个SQL语句添加到一个语句块中,然后一同提交给数据库服务器,同时执行。当执行多个SQL insert语句时效率将很高,因为一次提交比多次提交要
13、节省很多系统资源void close():释放Satement对象的数据库和JDBC资源。PreparedStatement接口对象主要使用以下方法:public ResultSet executeQuery(String sql):使用Select命名对数据库进行查询。public int executeUpdate(String sql):用于执行insert、update或delete语句对数据库进行新增、删除和修改操作。void setXXX(int parameterIndex,XXX x):设定XXX数据类型值给PreparedStatement 类对象的IN参数。Callable
14、Statement接口CallableStatement接口主要用于执行存储过程,其主要方法同Statement。存储过程有两种参数,IN参数和OUT参数。CallableStatement接口继承了PerpareedStatement接口的setXXX方法对IN参数赋值。在CallableStatement接口中使用OUT参数,要做两件事情,一是对OUT参数进行类型注册,二是获取OUT参数的值。CallableStatement提供了多种方法进行类型注册,下面是常用的两种:registerOutParameter(String parameterStringName, int sqlType
15、);registerOutParameter(String par (4) 数据结果集ResultSet接口ResultSet接口用于获取执行SQL语句(或数据库存储过程)返回的结果。它的实例对象是符合SQL语句条件的所有行。常用的方法有: public boolean next():用于数据库游标移动到结果集的下一行,使之成为当前行。如果当前行为最后一行,返回值为false;否则,返回true。 在定位到结果集中的某行后,就可以读取数据。对于不同数据类型,要使用不同的读取方法getXXX()。JDBC 提供了两种形式:public XXX getXXX(String columnName):
16、XXX代表任意的数据类型,参数columnName代表列名。public XXX getXXX(int columnIndex):XXX代表任意的数据类型,参数columnIndex代表列号。ResultSetMetaData getMetaData():获取结果集的列编号、类型和属性private Statement stmt = null;private ResultSet rs = null;private PreparedStatement prpSql=null;Class.forName(com.mysql.jdbc.Driver);Connection conn=DriverMa
17、nager.getConnection(jdbc:mysql:/localhost:端口号/数据库名称,用户名,密码);stmt = conn.createStatement();rs = stmt.executeUpdate(select * from database);while(rs.next() rs.getString(1);rs.close();stmt.close();conn.close();See P81总结:使用JDBC API访问数据库的步骤1. 加载JDBC驱动程序,例如加载jdbc-odbc利用System类静态方法setProperty()System.setPr
18、operty(“jdbc.drivers”,”sun.jdbc.obdc.Jdbc0dbcDriver”)利用class类的方法forName(),例如加载jdbc-odbcClass.forName(”sun.jdbc.obdc.Jdbc0dbcDriver”);加载JdbcClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver)2. 建立与数据库的连接String url=jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=db; /db为你的数据库的 String username=sa2;
19、 /刚才新SQL的用户名密码String password=sa2;Connection conn=DriverManager.getConnection(url,username,password);3. 进行数据库操作主要有两个接口:Statement和PrepareStatement.Statement rt=conn.createStatement()执行Sq命令:Con=DriverManager.getConntection(url);Statement stmt=con.createStatement();Stmt.excuteUpdate(sql);InsertUpdateDe
20、leteStmt.executeQuery(sql)Select,返回ResultSet操作依赖于sql语句。每执行一条sql语句,都要利用Connection实例的createStatement()方法创建一个statement实例,通过statement实例的excute()方法,excuteQuerry()方法,excuteUpdate()等方法执行sql语句。Statement stmt=conn.createStatement(); String sql2=delete from person where name=张一;int rs1=stmt.executeUpdate(sql2
21、); String sql=select * from person; /SC数据库的一个表名ResultSet rs=stmt.executeQuery(sql);4. 对操作结果进行分析执行select语句后,会产生一个Resultset结果集实例,对结果集进行分析是java应用程序的最终目的,要用循环遍历结果集,使用ResultSet的getXXX方法取得指定行指定列的数据。(见表4-5 of P81).while(rs.next() int id=rs.getint(id); .5. 关闭相关连接操作数据库完毕后,需要关闭相应连接以释放资源。/关闭ResultSet实例rsrs.close();/关闭Statement实例statementstatement.close();/关闭Connection实例concon.close();关闭数据库操作的顺序与打开数据库操作的顺序相反先关闭结果集(ResultSet)再关闭操作(Statement)最后关闭连接(Connection)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1