JDBC基础结构知识

上传人:张姑****py 文档编号:242912373 上传时间:2024-09-11 格式:PPT 页数:26 大小:309.50KB
返回 下载 相关 举报
JDBC基础结构知识_第1页
第1页 / 共26页
JDBC基础结构知识_第2页
第2页 / 共26页
JDBC基础结构知识_第3页
第3页 / 共26页
点击查看更多>>
资源描述
ACCP V4.0,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,第十三章,JDBC 基础知识,回顾,JTable的用途,如何使用JTable,JTree 的用途,如何使用,JTree,2,本章目标,了解JDBC的概念及必要性,了解JDBC驱动程序类型,理解JDBC 程序的结构,运用JDBC进行数据库编程,3,数据库访问技术简介,客户机/服务器,应用程序,数据库编程,ODBC,JDBC,两个常用的,API,数据库,执行 SQL 语句,检索查询结果,4,数据库,ODBC,客户机/服务器,GUI应用程序,ODBC,(开放式数据库连接),(Microsoft 提供),插 入,删 除,修 改,应用程序编程接口,查询,5,JDBC,JDBC,(Java 数据库连接),(sun公司提供),Java 应用程序编程接口,Java应用程序,数据库,插 入,修 改,删 除,查询,6,JDBC 驱动程序的类型,JDBC 驱动程序,的类型,JDBC-ODBC桥驱动程序及ODBC驱动程序,本地API部分Java驱动程序,JDBC-Net 纯Java驱动程序,本地协议纯Java驱动程序,7,JDBC 体系结构 2-1,Java 程序,JDBC 驱动程序,数据库,SQL 命令,结果,8,JDBC 体系结构 2-2,应用层,Driver,Statement,ResultSet,Connection,各接口,驱动层,9,java.sql 包 3-1,接口名,说明,Connection,此接口表示与数据的连接,PreparedStatement,此接口用于执行预编译的 SQL 语句,ResultSet,此接口表示了查询出来的数据库数据结果集,Statement,此接口用于执行 SQL 语句并将数据检索到 ResultSet 中,10,java.sql 包 3-2,类名,说明,DriverManager,此类用于加载和卸载各种驱动程序并建立与数据库的连接,Date,此类包含将 SQL 日期格式转换成,Java,日期格式的各种方法,Time,此类用于表示时间,TimeStamp,此类通过添加纳秒字段为,时间提,供更高的精确度,11,java.sql 包 3-3,SQLException,/*,* fooBar,*/,public void foobar() throws SQLException,throw new SQLException(“刚引发了一个 SQLException ”);,try,fooBar();, catch(SQLException ex),System.out.println(“已捕获一个 SQLException 异常!”);,System.out.println(“消息: “ + ex.getMessage();,System.out.println(“错误代码: “ + ex.getErrorCode();,调用,fooBar,12,JDBC 程序,访问数据库的步骤 2-1,开 始,导入,java.sql包,加载并注册驱动程序,创建一个,Connection 对象,创建一个 S,tatement 对象,执行语句,关闭,ResultSet 对象,关闭,Statement对象,关闭连接,结 束,使用,ResultSet对象,13,Friends 表的结构,JDBC 程序,访问数据库的步骤 2-2,它演示访问数据库的各个步骤,在执行示例 1 中的程序之前,SQL Server 中应该存在一个,名为 friends 的表,演示:示例,1,列名称,数据类型,名称,Varchar(50),地址,Varchar(50),电话,Numeric,入职日期,Datetime,工资,Numeric,/* 2005 Aptech Limited,* 版权所有,*/,import java.sql.SQLException;,import java.sql.Connection;,import java.sql.DriverManager;,import java.sql.Statement;,import java.sql.ResultSet;,/* 这个类演示访问数据库需遵循的各个步骤.,* version 1.0, 2005 年 8 月 26 日,* author Ben,*/,class Jdbctest ,/* 构造方法 */,protected Jdbctest() ,/*这是 main 方法.,*/,public static void main(String args) ,try ,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);, catch (ClassNotFoundException ce) ,System.out.println(ce);,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);,System.out.print(rs.getString(2) + t);,System.out.print(rs.getInt(3) + t);,System.out.print(rs.getDate(4) + t);,System.out.println( );,rs.close();,s.close();,con.close();, catch (SQLException ce) ,System.out.println(ce);,14,JDBC 查询2-1,SQL 查询字符串,executeQuery() 方法,作为参数传递,ResultSet,返回查询数据,SELECT name, email, phone FROM colleagues;,使用 SQL 语句,查询可编写为:,String str = SELECT emp_id, lname, fname FROM colleagues;,Statement stmt = con.createStatement();,ResultSet rset = stmt.executeQuery(str);,使用 JDBC 编写此查询,则代码为:,Statement接口,15,JDBC 查询2-2,它演示 SQL 中 sum( ) 方法的用法,演示,:示例,2,/*,* Jdbctest2,*/,import java.sql.SQLException;,import java.sql.Connection;,import java.sql.DriverManager;,import java.sql.Statement;,import java.sql.ResultSet;,/* 这个类演示 SQL 中 sum() 方法的用法,* version 1.0, 2005 年 8 月 26 日,* author Ben,*/,class Jdbctest2 ,/* 构造方法*/,protected Jdbctest2() ,/* 这是 main 方法*/,public static void main(String args) ,try ,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);, catch (ClassNotFoundException ce) ,System.out.println(ce);, try ,String url = jdbc:odbc:test;,Connection con = DriverManager.getConnection(url);,Statement s = con.createStatement();,ResultSet rs = s.executeQuery(,select hiredate, sum(salary) from friends group by hiredate);,while (rs.next() ,System.out.print(rs.getDate(1) + t);,System.out.print(rs.getInt(2) + t);,System.out.println( );,rs.close;,s.close();,con.close();, catch (SQLException ce) ,System.out.println(ce);,16,演示:示例,3,它演示 SQL 中 INSERT 语句的用法,/*,* Jdbctest3,*/,import java.sql.SQLException;,import java.sql.Connection;,import java.sql.DriverManager;,import java.sql.Statement;,import java.sql.ResultSet;,/* 这个类演示 INSERT 语句的用法.,* version 1.0, 2005 年 8 月 26 日,* author Ben,*/,class Jdbctest3 ,/* 构造方法 */,protected Jdbctest3() ,JDBC 插入数据实现,/* 这是 main 方法*/,public static void main(String args) ,try ,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);, catch (ClassNotFoundException ce) ,System.out.println(ce);,try ,String url = jdbc:odbc:test;,String str = INSERT INTO “,+ friends(name,address,salary)“,+ VALUES(朱八,深圳 ,25690);,Connection con = DriverManager.getConnection(url);,Statement s = con.createStatement();,int rowcount = s.executeUpdate(str);,String str1 = select name, sum(salary) “,+from friends,+ group by name;,ResultSet rs = s.executeQuery(str1);,while (rs.next() ,System.out.print(rs.getString(1) + t);,System.out.print(rs.getInt(2) + t);,System.out.println( );,rs.close();,s.close();,con.close();, catch (SQLException ce) ,System.out.println(ce);,17,JDBC 删除和修改实现,它演示 SQL 中各种命令的用法,演示:示例,4,/*,* Jdbc2,*/,import java.sql.SQLException;,import java.sql.Connection;,import java.sql.DriverManager;,import java.sql.Statement;,/* 这这个类演示,SQL,中命令的用法.,* ,version 1.0, 2005,年 8 月 26 日,* author Ben,*/,class Jdbc2 ,/* 构造方法.*/,protected Jdbc2() ,public static void main(String args) ,Connection con;,Statement stmt;,String url;,String sql;,try ,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);, catch (ClassNotFoundException ce) ,System.out.println(ce);,try ,url = jdbc:odbc:test;,con = DriverManager.getConnection(url);,sql = Delete from friends where rtrim(name)like,张三 ;,System.out.println( );,stmt = con.createStatement();,stmt.executeUpdate(sql);,System.out.println(,张三 的记录已删除“);,stmt.close();,con.close();,con = DriverManager.getConnection(url);,sql = Update friends set address=青岛 where “,+ rtrim(name) like 李四; ;,System.out.println( );,stmt = con.createStatement();,stmt.executeUpdate(sql);,stmt.close();,con.close();,System.out.println(李四的记录已更新);, catch (SQLException ce) ,System.out.println(ce);,18,PreparedStatement接口 3-1,PreparedStatement,接口,(预编译的 SQL 语句),PreparedStatement,用于提高运行时效率,执行 PreparedStatement,对象比执行 Statement 对象快,Statement 接口,19,PreparedStatement接口 3-2,它演示了PreparedStatement 的用法,演示:示例,5,/* ,* CourseAppl,*/,import java.sql.SQLException;,import java.sql.Connection;,import java.sql.DriverManager;,import java.sql.Statement;,import java.sql.ResultSet;,import java.sql.PreparedStatement;,/* 这个类演示 SQL 中 PreparedStatement 的用法*/,class CourseAppl ,private Connection con;,private String url;,private String serverName;,private String portNumber;,private String databaseName;,private String userName;,private String password;,private String sql;,CourseAppl() ,url = jdbc:microsoft:sqlserver:/;,serverName = “localhost;,portNumber = 1433;,databaseName = “test;,userName = “sa;,password = “sa;,private String getConnectionUrl() ,return url + serverName + : + portNumber,+ ;databaseName = + databaseName + ; ,private java.sql.Connection getConnection() ,try ,Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);,con = DriverManager.getConnection(,getConnectionUrl(), userName, password);,if (con != null) ,System.out.println(连接成功!);, catch (Exception e) ,e.printStackTrace();,System.out.println(getConnection() 内的错误跟踪:,+ e.getMessage();,return con;,public void display() ,try ,con = getConnection();,PreparedStatement pstmt = con.prepareStatement(,UPDATE,friends,SET,salary,= ? WHERE,name,like ?);,pstmt.setInt(1,10000,);,pstmt.setString(2, 李四 );,pstmt.executeUpdate();,System.out.println(“记录已更新!);,Statement s = con.createStatement();,String sql = SELECT * FROM,friends,;,ResultSet rs = s.executeQuery(sql);,while (rs.next() ,System.out.println( );,System.out.print(rs.getInt(1) + );,System.out.println(rs.getInt(5);, catch (SQLException ce) ,System.out.println(ce);,public static void main(String args) ,CourseAppl retObj = new CourseAppl();,retObj.display();,20,PreparedStatement 接口 3-3,它演示在基于条件的 SQL 查询中如何使用 PreparedStatement,其中条件在 IN 参数中给出,演示:示例,6,import java.sql.SQLException;,import java.sql.Connection;,import java.sql.DriverManager;,import java.sql.ResultSet;,import java.sql.PreparedStatement;,/* 这个类演示在基于条件的 SQL 查询中使用 PreparedStatement*/,class RetrieveRecords ,private Connection con;,private String url;,private String serverName, portNumber, databaseName, userName;,private String sql;,RetrieveRecords() ,url = jdbc:microsoft:sqlserver:/;,serverName = “localhost;,portNumber = 1433;,databaseName = “test;,userName = “sa;,password = “sa;,private String getConnectionUrl() ,return url + serverName + : + portNumber,+ ;databaseName = + databaseName + ;,private java.sql.Connection getConnection() ,try,Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);,con = DriverManager.getConnection(,getConnectionUrl(), userName, password);,if (con != null) ,System.out.println(连接成功!);, catch (Exception e) ,e.printStackTrace();,System.out.println(“getConnection() 内的错误跟踪:,+ e.getMessage();,return con;,public void display() ,try ,con = getConnection();,sql = select * from Friends where Salary ?;,PreparedStatement pstmt = con.prepareStatement(,sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);,pstmt.setInt(1, 5000);,ResultSet rs = pstmt.executeQuery();,while (rs.next() ,System.out.print(rs.getString(1) + t);,System.out.print(rs.getString(2) + t);,System.out.print(rs.getInt(3) + t);,System.out.print(rs.getDate(4) + t);,System.out.print(rs.getInt(5) + t);,System.out.println( );,rs.close();,pstmt.close();,con.close();, catch (SQLException ce) ,System.out.println(ce); /* 这是 main 方法*/,public static void main(String args) ,RetrieveRecords retRec = new RetrieveRecords();,retRec.display(); ,21,使用结果集 3-1,ResultSet 对象完全依赖于 Statement 对象和 Connection,对象,每次执行 SQL 语句时,都会用新的结果重写结果集,当相关的 Statement 关闭时,ResultSet 对象会自动关闭,Next( ),get(),此方法将光标从,当前位置下移一行,从 ResultSet,对象返回数据,22,使用结果集 3-2,它演示对当前行的处理,使用 next() 方法时,记录是按顺序处理的,必须按照数据返回的顺序处理每行中的数据,ResultSet rset = stmt.getResultSet();,while(rset.next(),String dept_name = rset.getString(1);,23,使用结果集 3-3,演示对当前列的处理,使用,get(),方法可以直接访问列,Statement stmt = con.createStatement();,Stmt.executeQuery(Select emp_id, fname from Employee) ;,ResultSet rset = stmt.getResultSet();,while(rset.next(),String ename = rset.getString (fname);,System.out.println ( ename) ;,Statement stmt = con.createStatement();,stmt.executeQuery(Select emp_id, fname from Employee);,ResultSet rset = stmt.getResultSet();,while(rset.next(),String employeeid = rset.getString (1);,以下代码显示值,1 被作为参数传递给,getString(),方法,,这实际上指列,emp_id,的索引,24,结果集的类型,可滚动,不可滚动,光标仅向前移动,光标可前后移动,也可移动,至与当前位置相对的某一行,如果对数据库做了更改,,则新值是可见的,结果集,TYPE_SCROLL_INSENSITIVE,TYPE_SCROLL_SENSITIVE,TYPE_FORWARD_ONLY,25,总结,JDBC概念的理解,使用 Class.forName() 方法可以将驱动程序加载到 Java 解释器中,使用,DriverManager,类的,getConnection(),方法和,Connection,对象的,createStatement(),方法可建立连接,最后,使用,executeQuery(),或,executeUpdate(),方法通过,Statement,实例构建并执行,SQL,语句,PreparedStatement,接口允许创建预编译的,SQL,语句,并使得在后续阶段可以指定语句的参数,结果集可以是可滚动的,也可以是不可滚动的,26,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 金融资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!