数据库访问技术简介

上传人:平*** 文档编号:16334794 上传时间:2017-11-07 格式:DOC 页数:21 大小:566.25KB
返回 下载 相关 举报
数据库访问技术简介_第1页
第1页 / 共21页
数据库访问技术简介_第2页
第2页 / 共21页
数据库访问技术简介_第3页
第3页 / 共21页
数据库访问技术简介_第4页
第4页 / 共21页
数据库访问技术简介_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《数据库访问技术简介》由会员分享,可在线阅读,更多相关《数据库访问技术简介(21页珍藏版)》请在金锄头文库上搜索。

1、一、了解JDBCJDBC( Java 数 据 库 连 接 )( sun公 司 提 供 )Java 应 用 程 序 编程 接 口Java应 用 程 序 数 据 库插 入 修 改删 除 查 询Sun Microsystems包括JDBC API(它是J2SDK的一部分)用来开发可与数据库进行通讯的Java应用程序。JDBC结构提供将Java语句转化为SQL语句的机制。JDBC结构可以分为两层:JDBC 应用程序层JDBC 驱动程序层Java的数据库解决方案跨越系统平台跨越数据库供应商Java中最底层的数据库访问APISUN提供接口,数据库厂商提供各自的实现二、预备知识 JAVA基础知识 数据库的基

2、本操作三、使用 JDBC API 1. 加载并注册Drivera) 驱动文件:要是想连接某个数据库就要使用相应的驱动程序。当然也可以使用JDBC- ODBC桥接技术。SqlServer2000的驱动程序由三个文件组成:msbase.jar、mssqlserver.jar、msutil.jar。SqlServer2005的驱动程序只有一个文件:sqljdbc.jar或sqljdbc4.jarMySql的驱动程序只有一个文件:mysql-connector-java-5.1.5-bin.jarb) 注册Class.forName() 或 Class.forName().newInstance()

3、或 new DriverName()SqlServer2000Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);SqlServer2005Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);MySqlClass.forName(com.mysql.jdbc.Driver);OracleClass.forName(oracle.jdbc.driver.OracleDriver);2. 连接数据库a)DriverManager.getConnection(Str

4、ing URL , String userName , String password); Connection接口:使你可以建立Java应用程序与数据库之间的连接。DriverManager 类:为数据库加载驱动程序。private Connection con;/SqlServer2000con = java.sql.DriverManager.getConnection(jdbc:microsoft:sqlserver:/127.0.0.1:1433;DatabaseName=master,sa, sa);/SqlServer2005con = java.sql.DriverManage

5、r.getConnection(jdbc:sqlserver:/127.0.0.1:1433;DatabaseName=master,sa, sa);/MySqlcon = java.sql.DriverManager.getConnection(jdbc:mysql:/localhost/myDB?user=soft&password=soft1234); con =DriverManager.getConnection(jdbc:mysql:/localhost:3306/pubs,root,root);/Oraclecon = java.sql.DriverManager.getConn

6、ection(jdbc:oracle:thin:192.168.0.39:1521:tarenadb);3. 执行SQL语句a) Statement 对象名 = Connection实例.CreateStatement();Statement 接口:执行SQL语句。b) ResultSet 对象名 = Statement实例.executeQuery();ResultSet executeQuery(): 执行SELECT语句并在ResultSet对象中返回结果。int executeUpdate(): 执行一个 SQL语句(INSERT、 UPDATE或DELETE) 并返回受影响的行数。

7、boolean execute():执行一个SQL语句并返回一个布尔值。ResultSet 接口:存储数据库检索的结果集。ResultSet 对象完全依赖于 Statement 对象和 Connection 对象。每次执行 SQL 语句时,都会用新的结果重写结果集。当相关的 Statement 关闭时,ResultSet 对象会自动关闭。4. 检索结果a) 循环取得结果while(rs.next()5. 显示结果a) 将数据库中的各种类型转换为Java中的类型get()方法6. 关闭资源a) close the result 和 close the statement 和 close the

8、connection*注意:要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源。四、处理SQL 异常Java.sql程序包提供了SQLException类,你可以在Java应用程序中使用try和catch异常处理块来捕捉SQLException。引入问题:通过给主函数传递参数,将数据添加到表格。一、使用PreparedStatement对象创建应用程序1、认识PreparedStatement对象PreparedStatement接口在java.sql程序包中,并继承了Statement接口。 PreparedStatement对象可以将运行时参数传递

9、给SQL语句以查询和修改表中的数 据。 2、使用PreparedStatement 对象a) 使用 Connection对象的prepareStatement()方法来向数据库提交参数化的查询。SQL语句可以包含? 符号作为占位符,它可以被运行时输入的参数替代。 pstat = con.prepareStatement(SELECT * FROM Authors WHERE au_id = ?);b) 可以通过调用适当的 setXXX()方法来设定每一个 ?参数的值。其中XXX为参数的数据类型。pstat.setString(1,“a001);ResultSet result = pstat.

10、executeQuery();二、JDBC中的存储过程CallableStatement(从PreparedStatement继承而来,调用存储过程专用)在 JDBC 中调用已储存过程的语法如下所示。注意,方括号表示其间的内容是可选项;call 过程名(?, ?, .) 返回结果参数的过程的语法为: ? = call 过程名(?, ?, .) 不带参数的已储存过程的语法类似: call 过程名 1、创建 CallableStatement 对象 CallableStatement 对象是用 Connection 方法 prepareCall 创建的。CallableStatement cstm

11、t = con.prepareCall(call getTestData(?, ?); 2、IN 和OUT 参数 将IN 参数传给 CallableStatement 对象是通过 setXXX 方法完成的。该方法继承自PreparedStatement。所传入参数的类型决定了所用的setXXX方法。 如果已储存过程返回 OUT 参数,则在执行 CallableStatement 对象以前必须先注册每个OUT参数的 JDBC 类型。注册 JDBC 类型是用registerOutParameter方法来完成的。语句执行完后,CallableStatement 的 getXXX 方法将取回参数值。正

12、确的 getXXX 方法是为各参数所注册的 JDBC 类型所对应的 Java 类型。换言之,registerOutParameter 使用的是 JDBC 类型(因此它与数据库返回的 JDBC 类型匹配) ,而 getXXX将之转换为 Java 类型。三、JDBC中的批处理1、什么是批处理一个批处理是被发送到数据库服务器以作为单个单元执行的一组SQL语句。 2、执行批处理Statement或PreparedStatement接口提供了以下方法来创建和执行一个SQL语句的批处理:void addBatch():将一个SQL语句添加到一个批处理中。int executeBatch():将一个SQL语

13、句的批处理发送到数据库服务器中以便进行处理并返回已更新的总行数。void clearBatch(): 从批处理中移除SQL语句。Statement stmt = con.createStatement();stmt.addBatch(INSERT INTO Publishers (pub_id, pub_name) VALUES (p001,Tate Publishing);stmt.addBatch(INSERT INTO Publishers (pub_id, pub_name) VALUES (p002, Publish America); stmt.executeBatch();四、J

14、DBC中的事务处理1、什么是事务事务是一个不可分割的工作单元。只有当一事务中的所有SQL语句均成功执行时,这个事务才算完成。事务维护数据库中数据的一致性。结束事务的两种方法:提交(commit)回滚(rollback)2、事务控制在jdbc中,事务操作缺省是自动提交。也就是说,一条对数据库的更新表达式代表一项事务操作,操作成功后,系统将自动调用commit()来提交,否则将调用rollback()来回滚。通过调用setAutoCommit(false) 来禁止自动提交。然后将多个数据库操作的表达式作为一个事务,在操作完成后调用commit()来进行整体提交,倘若其中一个表达式操作失败,都不会执

15、行到commit(),并且将产生响应的异常;此时就可以在异常捕获时调用rollback()进行回滚。五、滚动的结果集Statement stmt = con.createStatement(int type,int concurrency);1、参数 int typeResultSet.TYPE_FORWORD_ONLY:结果集的游标只能向下滚动。ResultSet.TYPE_SCROLL_INSENSITIVE:结果集的游标可以上下移动,当数据库变化时,当前结果集不变。ResultSet.TYPE_SCROLL_SENSITIVE:返回可滚动的结果集,当数据库变化时,当前结果集同步改变。2、参数 int concurrencyResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATETABLE:能用结果集更新数据库中的表。3、使用下列方法获得信息:public boolean previous():将游标向上移动,该方法返回boolean型数据,当移到结果集第一行之前时,返回false。public void beforeFirst():将游标移动到结果集的初始位置,即在第一行之前。public void afterLast():将游标移到结果集最后一行之后。pub

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号