J2EE培训(20040315).ppt_第1页
J2EE培训(20040315).ppt_第2页
J2EE培训(20040315).ppt_第3页
J2EE培训(20040315).ppt_第4页
J2EE培训(20040315).ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、J2EE系统培训(4),JDBC、事务、公共服务 梁雪峰,2020/8/6,2,介绍,JDBC的基础知识介绍 介绍数据库连接池、事务处理的基本知识 简单介绍J2EE的公共服务,2020/8/6,3,JDBC介绍,JDBC的由来 以ODBC(Open DataBase Connectivity)模式建立的 X/OpenSQLCLI(Open SQL Call Lavel Inteface) JDBC是一个SQL级的接口,2020/8/6,4,JDBC在J2EE系统中的位置,JDBC是一套API,属于基础支撑的平台J2SE一部分,EJB/其他 平台,JDBC,Oracle,Sybase,2020/

2、8/6,5,JDBC的例子,String url = jdbc:oracle:thin:192.168.0.218:1521:new97db; String driver = oracle.jdbc.driver.OracleDriver; Connection conn = null; String sql = select * from LOGIN; try Class.forName(driver).newInstance(); conn = DriverManager.getConnection(url, test, test); Statement stmt = conn.creat

3、eStatement(); ResultSet rs = stmt.executeQuery(sql);,2020/8/6,6,JDBC的例子(续),while (rs.next() / 结果集处理 System.out.println(=); int id = rs.getInt(1); System.out.println(ID : + id); System.out.println(-); String name = rs.getString(2); if (name = null) name = ; System.out.println(Name : + name); String p

4、ass = rs.getString(3); if (pass = null) pass = ; System.out.println(Pass : + pass); ,2020/8/6,7,JDBC基本类及接口,2020/8/6,8,数据库和驱动程序,四种类型的驱动程序:,2020/8/6,9,数据库和驱动程序,第一类驱动程序 通过桥接(java over c)技术连接到其他类型的数据库连接上,这样可以使用其他所有类型的驱动程序,通常使用的是ODBC 第二类驱动程序 利用桥接到数据库自己的标准驱动程序中,例如Oracle的OCI模式 第三类驱动程序 这一层包含了给Java程序提供的标准方法和

5、统一的接口 第四类驱动程序 通过Java程序编写的Socket数据库连接,例如Oracle的Thin模式,2020/8/6,10,JDBC的替代方法,当前现状JDBC和ODBC SQLJ 未来的方向,2020/8/6,11,创建数据库连接,利用DriverManager可以连接到数据库,而且可以更换不同数据库引擎 Java.sql.Driver Java.sql.DriverManager Java.sql.Connection Connection conn =DriverManager.getConnection(url, uid,password),2020/8/6,12,基本数据库操作

6、类,Java.sql.Statement Java.sql.ResultSet 取得结果:Statement.executeQuery(sql) 取得结果中的一个数据ResultSet.getObject(num) SQL空值与Java空值,2020/8/6,13,SQL数据类型与Java数据类型,2020/8/6,14,JDBC结果集,可滚动的结果集 可更新的结果集 TYPE_FORWORD_ONLY TYPE_SCROLL_SENSITIVE TYPE_SCROLL_INSENSITIVE,2020/8/6,15,预定义SQL语句,preparedStatement SQL语句写法中有参数

7、,参数以?代替 在创建了以后,就可以使用setxxx方法来设置变量 Execute()方法执行 clearParameters()方法清除参数,2020/8/6,16,预定义SQL语句(2),PreparedStatement ptst = conn.prepareStatement(“UPDATE LOGIN SET PASSWORD = ? WHERE ID = ?”); Ptst.setString(0, “TEST”); Ptst.setInt(1, 1); Ptst.execute(); Ptst.clearParameters();,2020/8/6,17,存储过程,Callabl

8、eStatement registerOutParameter() 对于可输出结果集和不可输出结果集的存储过程的处理 对于Oracle特殊的输出参数Ref Cursor的处理,2020/8/6,18,Statement的批处理,机制是本地SQL缓存 数据库事务的非一直性 addBatch() executeBatch() 数据库瓶颈效应,2020/8/6,19,行集操作,主要指针对可更新结果集 在选出行中必须包含主键列 行集操作的本质是数据库游标 更新:Updatexxx、updateRow 插入:moveToInsertRow, InsertRow 删除:deleteRow 同步刷新:ref

9、reshRow,2020/8/6,20,Blob及Clob的操作,二进制流、文件流处理 针对某些数据库需要单独处理这个字段 Blob b = rs.getBlob(1) inputStream in = b.getBinaryStream(); 更新时采用setBlob,2020/8/6,21,元数据Meta-Data,结果集元对象:取得结果集中个数、字段名称及是否大小写、是否为null、表信息等 数据库元对象:连接驱动程序、可见表、只读表、列别名是否支持、是否支持多个结果集等,2020/8/6,22,数据库连接池,连接池化的好处 Javax.sql.DataSource接口 Javax.sq

10、l. PooledConnection接口 可以绑定JNDI名称,用于连接使用相同的连接池,2020/8/6,23,连接池使用,使用 Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup(jdbc/sample); Connection conn = ds.getConnection(test, test); 建立 MsqlDataSource ds = new MsqlDataSource(); Context ctx = new InitialContext(); ds.setServerNam

11、e(sample); ds.setDatabaseName(test); ctx.bind(jdbc/sample, ds);,2020/8/6,24,连接池的工作状态,2020/8/6,25,JDBC3的连接池对象,2020/8/6,26,分布式事务,SQL事务 Commit,setAutoCommit(true),Rollback 两段事务提交 数据库事务 事务一致性,2020/8/6,27,JDBC数据持久性,JDBC事务及持久性 组件级事务及持久性 Java持久性类库,2020/8/6,28,J2EE公共服务,Java核心API:反射Reflection Class类,方法forNam

12、e、newInstance Method类,方法invoke Field类 ClassLoader类,方法loadClass,2020/8/6,29,J2EE公共服务,Java核心API:Exception Throwable类,方法:getMessage、printStackTrace Exception类 RemoteException,SQLException,2020/8/6,30,J2EE公共服务,JavaMail服务 POP3、SMTP和IMAP协议 Javax.mail.Session类 Javax.mail.Message类 Javax.mail.Address类 Javax.

13、mail.Transport类,2020/8/6,31,J2EE公共服务,发送邮件 Properties props = new Properties();Session sendMailSession;Store store;Transport transport; sendMailSession = Session.getInstance(props, null);props.put(mail.smtp.host, );Message newMessage = new MimeMessage(sendMailSession);newMessage.setFrom(new InternetA

14、ddress(“from”);newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress ( “to”);newMessage.setSubject(subject);newMessage.setSentDate(new Date();newMessage.setText(text);transport = sendMailSession.getTransport(smtp);transport.send(newMessage);,2020/8/6,32,J2EE公共服务,接收邮件 Properties props

15、 = System.getProperties();Session session = Session.getDefaultInstance(props, null);store = session.getStore(pop3);store.connect(popServer, popUser, popPassword);folder = store.getDefaultFolder();if (folder = null) throw new Exception(No default folder);folder = folder.getFolder(INBOX);if (folder =

16、null) throw new Exception(No POP3 INBOX);folder.open(Folder.READ_ONLY);Message msgs = folder.getMessages();for (int msgNum = 0; msgNum msgs.length; msgNum+)printMessage(msgsmsgNum);,2020/8/6,33,J2EE公共服务,XML与J2EE体系 XML(EXtensible Markup Language)的优点:可扩展性、可确认性、可自解释 XML与HTML所承担的角色是不同的,他们所装载的数据量不同 XML中的数据岛概念 XML中DTD描述符,2020/8/6,34,XML用途,XML 能够被用来分隔你的数据你的HTML XML 也能够被用来在HTML文档内部保存数据(XLST) XML 能够被用来作为一种交换信息的格式(Web Service) XML 能够被用来将数据保存到文件或数据库中,2020/8/6,35,J2EE体系提供的服务,XML的Java解析器:SAX SAX主要的类:Parser类、DocumentHandler类 XML的DOM模型,2020/8/6,36,J2EE提供的公共服务,CORBA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论