JAVA-JDBC数据库编程.ppt
第四章,JDBC数据库编程,计算机学院 赵卓君,2,回顾,JBuilder 是用户设计、开发、测试、部署和管理 Java 应用程序的继承开发环境Swing 是在AWT基础上发展起来的轻量级组件,用于开发Java GUI 应用程序要处理事件,可使用事件处理程序,以执行所需操作 布局管理器可在容器中自动定位组件,计算机学院 赵卓君,3,本讲目标,了解JDBC的概念及必要性了解JDBC驱动程序类型 理解JDBC 程序的结构(重点、难点)运用JDBC进行数据库编程(重点、难点),计算机学院 赵卓君,4,数据库访问技术简介,数据库编程,客户机/服务器应用程序,ODBC,JDBC,两个常用的API,数据库,执行 SQL 语句,检索查询结果,计算机学院 赵卓君,5,ODBC,计算机学院 赵卓君,6,JDBC,计算机学院 赵卓君,7,JDBC 驱动程序的类型,计算机学院 赵卓君,8,JDBC应用程序模型2-1,Java应用程序,JDBC,数据库,SQL 命令,结果,计算机学院 赵卓君,9,JDBC应用程序模型2-2,计算机学院 赵卓君,10,java.sql 包 2-1,计算机学院 赵卓君,11,java.sql 包 2-2,SQLException必须捕获,public void foobar()throws SQLException throw new SQLException(“刚引发了一个 SQLException”);,try fooBar();catch(SQLException ex)(“已捕获一个 SQLException 异常!”);(“消息:“+ex.getMessage();(“错误代码:“+ex.getErrorCode();,调用 fooBar,计算机学院 赵卓君,12,JDBC程序访问数据库的步骤 2-1,计算机学院 赵卓君,13,JDBC程序访问数据库的步骤 2-2,import java.sql.*;class AccessDatabasepublic static void main(String args)try);String url=jdbc:odbc:test;Connection con=DriverManager.getConnection(url);Statement s=con.createStatement();ResultSet rs=s.executeQuery(select*from friends);while(rs.next()System.out.print(rs.getString(1)+t);。rs.close();s.close();con.close();catch(Exception ex)System.out.println(ex.getMessage();,计算机学院 赵卓君,14,JDBC插入数据实现,import java.sql.*;public static void main(String args)try);String url=jdbc:odbc:test;Connection con=DriverManager.getConnection(url);String sql=INSERT INTO Student(id,name,address)“+“VALUES(001,朱八,深圳);Statement stmt=con.createStatement();int rowcount=stmt.executeUpdate(sql);stmt.close();con.close();catch(SQLException ex)System.out.println(ex.getMessage();,计算机学院 赵卓君,15,JDBC删除和修改实现,public static void main(String args)try);url=jdbc:odbc:test;Connection con=DriverManager.getConnection(url);String sql=Delete from Student where name like%张三%;Statement stmt=con.createStatement();stmt=con.createStatement();stmt.executeUpdate(sql);(张三 的记录已删除“);stmt.close();con.close();catch(SQLException ex)System.out.println(ex.getMessage();,计算机学院 赵卓君,16,JDBC查询数据实现,计算机学院 赵卓君,17,使用结果集 4-1,ResultSet 对象完全依赖于 Statement 对象和 Connection 对象每次执行 SQL 语句时,都会用新的结果重写结果集当相关的 Statement 关闭时,ResultSet 对象会自动关闭,计算机学院 赵卓君,18,使用结果集 4-2,它演示对当前行的处理使用 next()方法时,记录是按顺序处理的必须按照数据返回的顺序处理每行中的数据,ResultSet rset=stmt.getResultSet();while(rset.next()String dept_name=rset.getString(1);,计算机学院 赵卓君,19,使用结果集 4-3,演示对当前列的处理使用 get()方法可以直接访问列,Statement stmt=con.createStatement();Stmt.executeQuery(Select id,name from Student);ResultSet rs=stmt.getResultSet();while(rs.next()String name=rset.getString(name);(name);,计算机学院 赵卓君,20,使用结果集 4-4,以下代码显示值 1 被作为参数传递给 getString()方法,这实际上指列 id 的索引,Statement stmt=con.createStatement();stmt.executeQuery(Select id,name from Student);ResultSet rs=stmt.getResultSet();while(rs.next()String employeeid=rs.getString(1);,计算机学院 赵卓君,21,PreparedStatement接口,基于条件的 SQL 查询中使用 PreparedStatement,其中条件在 IN 参数中给出,计算机学院 赵卓君,22,总结,JDBC概念的理解使用 Class.forName()方法可以将驱动程序加载到 Java 解释器中使用 DriverManager 类的 getConnection()方法和 Connection 对象的 createStatement()方法建立连接使用Statement类的executeQuery()或 executeUpdate()方法执行 SQL 语句PreparedStatement 接口允许创建预编译的SQL 语句,并使得在后续阶段可以指定语句的参数,