Java语言程序设计第十三章.ppt

上传人:小飞机 文档编号:6510229 上传时间:2023-11-07 格式:PPT 页数:23 大小:344.49KB
返回 下载 相关 举报
Java语言程序设计第十三章.ppt_第1页
第1页 / 共23页
Java语言程序设计第十三章.ppt_第2页
第2页 / 共23页
Java语言程序设计第十三章.ppt_第3页
第3页 / 共23页
Java语言程序设计第十三章.ppt_第4页
第4页 / 共23页
Java语言程序设计第十三章.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《Java语言程序设计第十三章.ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计第十三章.ppt(23页珍藏版)》请在三一办公上搜索。

1、1,Java面向对象程序设计,第13章 数据库编程,2,本章主要内容,熟练java.sql包的使用掌握使用JDBC技术访问数据库掌握预编译执行SQL语句,3,JDBC简介,JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。使用JDBC API,可以向各种关系数据发送SQL语句。目前比较常见的JDBC驱动程序可分为以下4个种类:JDBC-ODBC桥加ODBC驱动程序 本地API JDBC网络纯Java驱动程序 本地协议纯Java驱动程序,4,java.sql包,JDBC做三件事:与数据库建立连接、发送 SQL 语句并处

2、理结果。JDBC API包括一个框架(来自java.sql包),凭借此框架可以动态地安装不同驱动程序来访问不同数据源、执行SQL语句、处理结果集或更新数据记录等。,5,使用JDBC API进行数据库操作步骤,导入JDBC API:首先利用import语句导入java.sql包。装载驱动程序:针对不同DBMS,使用Class类的forName方法加载驱动程序类的支持。建立数据库连接:使用DriverManager类的getConnection方法,指明数据库或数据源的url,以及登录DBMS的用户名及口令,创建数据库连接对象(Connection接口对象)。创建JDBC Statements对象

3、:使用已有的Connection数据库连接对象创建一个Statement对象,利用该对象把SQL语句执行适当的方法发送到DBMS。,6,使用JDBC API进行数据库操作步骤,执行语句:对SELECT语句来说,使用executeQuery方法执行,返回结果是ResultSet类型的结果集:对INSERT、UPDATE、DELETE语句来说,使用executeUpdate方法执行,返回结果是影响的行数。处理结果:对返回的结果集或影响行数进行处理,可以进行显示、判断等操作。关闭资源:与各种对象创建的顺序相反,依次关闭ResultSet、Statement、Connection对象。,7,访问数据库

4、,配置ODBC数据源1.在控制面板中,打开管理工具数据源(ODBC),弹出“ODBC数据源管理器”对话框,点击“系统DSN”选项卡,如图13.2所示。该对话框中列出若干已经配置好的针对不同DBMS的系统数据源。,8,访问数据库,配置ODBC数据源2.单击“添加”按钮,添加新的数据源,在打开的“创建新数据源”对话框中,根据使用的DBMS类型选择要安装数据源的驱动程序,这里选择“SQL Server”,如图13.3所示。,9,访问数据库,配置ODBC数据源3.单击“完成”按钮,打开“创建到SQL Server的新数据源”对话框,在数据源名称文本框中填写“data”,在服务器下拉框中选择要连接的数据

5、库服务器名,这里选择“(local)”(表示连接本机的数据库),如图13.4所示。,10,访问数据库,配置ODBC数据源4.单击“下一步”,默认选择“使用网络登录ID的Windows NT验证”,如图13.5所示。继续“下一步”,选中“更改默认的数据库”复选框,然后在激活的下拉框中选择“pubs”数据库,如图13.6所示。,11,访问数据库,配置ODBC数据源5.继续“下一步”,单击“完成”按钮,弹出“ODBC Microsoft SQL Server安装”信息对话框,如图13.7,可以单击“测试数据源”按钮进行连接测试,确认无误后,点击“确定”,即完成数据源的设置。,12,访问数据库创建数据

6、库连接,【例13.1】使用JDBC-ODBC桥的方式,利用13.3.1节中已经配置好的数据源data,创建与SQL Server 2000数据库pubs的连接。import java.sql.*;public class SqlTest public static void main(String args)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connection conn=DriverManager.getConnection(jdbc:odbc:data,sa,sa);System.out.println(与数据库pubs连接成功

7、);catch(Exception e)System.out.println(数据库连接失败);e.printStackTrace();,13,访问数据库创建数据库连接,使用JDBC-ODBC桥的方式加载驱动程序与创建连接方法的语法格式如下:Class.forName(驱动程序名称);Connection conn=DriverManager.getConnection(jdbc:,username,password);在实际开发中经常使用第三方驱动方式来建立与数据库之间的连接。利用如下代码装载驱动类:Class.forName(com.microsoft.jdbc.sqlserver.SQL

8、ServerDriver);/支持SQL Server 2000 Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);/支持SQL Server 2005,14,访问数据库创建数据库连接,创建连接对象时无需指明数据源,而是使用包含JDBC协议、地址、端口和数据库名称的url地址,来定位数据库,代码如下:Connection conn=DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;databaseName=pubs,sa,sa);,15,访问数据库查询数据,

9、创建好数据库连接对象后,就可以对数据库中的数据进行操作。SELECT查询是企业级应用系统最基本的操作,将数据库中的数据以某种视图模式显示给用户。代码步骤一般是基于Connection连接对象创建一个Statement对象,使用其executeQuery方法执行SELECT语句,返回结果一个ResultSet结果集对象。,16,访问数据库查询数据,【例13.2】查询输出数据库pubs中employee表的全部记录数据。,Connection conn=null;/声明Connection对象Statement stmt=null;/声明Statement对象ResultSet rs=null;/

10、声明ResultSet对象 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn=DriverManager.getConnection(jdbc:odbc:data,sa,sa);stmt=conn.createStatement();/创建Statement对象 String sql=select*from employee;rs=stmt.executeQuery(sql);/执行SELECT语句,返回结果集 while(rs.next()/循环输出每条记录的各个字段值 System.out.print(rs.getString(emp

11、_id)+t);System.out.print(rs.getString(fname)+t);catch(Exception e)finally rs.close();stmt.close();conn.close();,17,访问数据库查询数据,【例13.3】查询数据库pubs中employee表的第2条记录数据,输出其emp_id、fname、lname和hire_date字段。,Connection conn=null;/声明Connection对象Statement stmt=null;/声明Statement对象ResultSet rs=null;/声明ResultSet对象 tr

12、y Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn=DriverManager.getConnection(jdbc:odbc:data,sa,sa);stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);String sql=select*from employee;rs=stmt.executeQuery(sql);/执行SELECT语句,返回结果集 rs.absolute(2);/绝对定位到第2条记录 System.out

13、.print(rs.getString(emp_id)+t);System.out.print(rs.getString(fname)+t);catch(Exception e)finally rs.close();stmt.close();conn.close();,18,访问数据库更新数据,【例13.4】向数据库pubs的employee表中插入一条记录,并根据emp_id查询出该条记录的数据。,public class InsertDemo private Connection conn=null;private Statement stmt=null;private ResultSet

14、 rs=null;public void openConn()/抽象出创建数据库连接资源的方法 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn=DriverManager.getConnection(jdbc:odbc:data,sa,sa);stmt=conn.createStatement();catch(Exception e)e.printStackTrace();,public void closeConn()/抽象出关闭数据库资源的方法 try if(rs!=null)rs.close();if(stmt!=null)stm

15、t.close();if(conn!=null)conn.close();catch(SQLException e)e.printStackTrace();,public void queryByID(String emp_id)openConn();try String sql=“select*from employee where emp_id=“+emp_id+“;rs=stmt.executeQuery(sql);if(rs.next()System.out.print(rs.getString(emp_id)+t);System.out.print(rs.getString(fnam

16、e)+t);catch(Exception e)e.printStackTrace();finally closeConn();,/数据插入public boolean insert(String emp_id,String fname,String minit,String lname,int job_id,int job_lvl,String pub_id,Date hire_date)openConn();/打开数据库连接 try String sql=insert into employee values(+emp_id+,+fname+,+minit+,+lname+,+job_id

17、+,+job_lvl+,+pub_id+,“+hire_date+);int num=stmt.executeUpdate(sql);/执行INSERT语句 if(num 0)return true;catch(Exception e)e.printStackTrace();finally closeConn();return false;,19,访问数据库更新数据,【例13.5】修改例13.4中插入的记录,并输出更新后的结果。,/数据修改public boolean update(String emp_id,String minit)openConn();/打开数据库连接 try Strin

18、g sql=update employee set minit=+minit+where emp_id=+emp_id+;int num=stmt.executeUpdate(sql);/执行UPDATE语句 if(num 0)return true;catch(Exception e)e.printStackTrace();finally closeConn();return false;,20,访问数据库更新数据,【例13.6】删除例13.5中插入的记录,并根据emp_id查询是否还存在该记录。,/数据删除public boolean delete(String emp_id)openCo

19、nn();try String sql=delete from employee where emp_id=+emp_id+;int num=stmt.executeUpdate(sql);/执行DELETE语句 if(num 0)return true;catch(Exception e)e.printStackTrace();finally closeConn();return false;,21,使用预编译SQL语句,利用Statement对象执行SQL语句中存在执行效率的问题,即每次都将整条SQL语句发送到数据库执行。可以考虑使用预编译SQL语句。使用预编译语句不需要数据库对相同的SQ

20、L语句进行分析和编译,即可直接运行,这种方法大大提高执行效率。例如,查询某指定pub_id的所有employee信息:String sql=select*from employee where pub_id=?;其中,查询字符串中的问号“?”是输入参数的占位符。这些占位符对应于数据库中的变量,称为绑定变量。使用绑定变量的查询被编译一次,随后把这个查询作为一个模板。如果以后再执行该查询,将直接使用该模板运行。,22,使用预编译SQL语句,【例13.7】使用PreparedStatement执行SQL语句,查询pub_id为“9952”的所有employee信息。,/数据删除public void

21、 queryByPubID(String pub_id)openConn();try String sql=select*from employee where pub_id=?;/问号占位符 ps=conn.prepareStatement(sql);/创建PreparedStatement对象 ps.setString(1,pub_id);/指定输入参数的值 rs=ps.executeQuery();/执行SQL查询 while(rs.next()System.out.print(rs.getString(emp_id)+t);System.out.print(rs.getString(fname)+t);catch(Exception e)e.printStackTrace();finally closeConn();,23,总结,熟练java.sql包的使用掌握使用JDBC技术访问数据库掌握预编译执行SQL语句,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号