Java语言程序设计 第十三章

上传人:二*** 文档编号:243077285 上传时间:2024-09-15 格式:PPT 页数:23 大小:251.50KB
返回 下载 相关 举报
Java语言程序设计 第十三章_第1页
第1页 / 共23页
Java语言程序设计 第十三章_第2页
第2页 / 共23页
Java语言程序设计 第十三章_第3页
第3页 / 共23页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Java,面向对象程序设计,第,13,章 数据库编程,1,本章主要内容,熟练,java.sql,包的使用,掌握使用,JDBC,技术访问数据库,掌握预编译执行,SQL,语句,2,JDBC,简介,JDBC,是一种用于执行,SQL,语句的,Java API,,可以为多种关系数据库提供统一访问,它由一组用,Java,语言编写的类和接口组成。使用,JDBC API,,可以向各种关系数据发送,SQL,语句。,目前比较常见的,JDBC,驱动程序可分为以下,4,个种类:,JDBC-ODBC,桥加,ODBC,驱动程序,本地,API,JDBC,网络纯,Java,驱动程序,本地协议纯,Java,驱动程序,数据库,Java,应用程序,JDBC,驱动程序,SQL,命令,结果,3,java.sql,包,JDBC,做三件事:与数据库建立连接、发送,SQL,语句并处理结果。,JDBC API,包括一个框架(来自,java.sql,包),凭借此框架可以动态地安装不同驱动程序来访问不同数据源、执行,SQL,语句、处理结果集或更新数据记录等。,类或接口名称,说明,DriverManager,此类用于加载和卸载各种驱动程序并建立与数据库的连接,Connection,此接口表示与数据的连接,Statement,此接口用于执行,SQL,语句,PreparedStatement,此接口用于执行预编译的,SQL,语句,ResultSet,此接口表示查询出来的数据库数据结果集,SQLException,此接口用于检索数据库提供的错误消息和错误代码,4,使用,JDBC API,进行数据库操作步骤,导入,JDBC API,:首先利用,import,语句导入,java.sql,包。,装载驱动程序:针对不同,DBMS,,使用,Class,类的,forName,方法加载驱动程序类的支持。,建立数据库连接:使用,DriverManager,类的,getConnection,方法,指明数据库或数据源的,url,,以及登录,DBMS,的用户名及口令,创建数据库连接对象(,Connection,接口对象)。,创建,JDBC Statements,对象:使用已有的,Connection,数据库连接对象创建一个,Statement,对象,利用该对象把,SQL,语句执行适当的方法发送到,DBMS,。,5,使用,JDBC API,进行数据库操作步骤,执行语句:对,SELECT,语句来说,使用,executeQuery,方法执行,返回结果是,ResultSet,类型的结果集:对,INSERT,、,UPDATE,、,DELETE,语句来说,使用,executeUpdate,方法执行,返回结果是影响的行数。,处理结果:对返回的结果集或影响行数进行处理,可以进行显示、判断等操作。,关闭资源:与各种对象创建的顺序相反,依次关闭,ResultSet,、,Statement,、,Connection,对象。,6,访问数据库,配置,ODBC,数据源,1.,在控制面板中,打开管理工具数据源(,ODBC,),弹出“,ODBC,数据源管理器”对话框,点击“系统,DSN”,选项卡,如图,13.2,所示。该对话框中列出若干已经配置好的针对不同,DBMS,的系统数据源。,7,访问数据库,配置,ODBC,数据源,2.,单击“添加”按钮,添加新的数据源,在打开的“创建新数据源”对话框中,根据使用的,DBMS,类型选择要安装数据源的驱动程序,这里选择“,SQL Server”,,如图,13.3,所示。,8,访问数据库,配置,ODBC,数据源,3.,单击“完成”按钮,打开“创建到,SQL Server,的新数据源”对话框,在数据源名称文本框中填写“,data”,,在服务器下拉框中选择要连接的数据库服务器名,这里选择“,(local)”,(表示连接本机的数据库),如图,13.4,所示。,9,访问数据库,配置,ODBC,数据源,4.,单击“下一步”,默认选择“使用网络登录,ID,的,Windows NT,验证”,如图,13.5,所示。继续“下一步”,选中“更改默认的数据库”复选框,然后在激活的下拉框中选择“,pubs”,数据库,如图,13.6,所示。,10,访问数据库,配置,ODBC,数据源,5.,继续“下一步”,单击“完成”按钮,弹出“,ODBC Microsoft SQL Server,安装”信息对话框,如图,13.7,,可以单击“测试数据源”按钮进行连接测试,确认无误后,点击“确定”,即完成数据源的设置。,11,访问数据库,创建数据库连接,【,例,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,连接成功,);, catch (Exception e) ,System.out.println,(,数据库连接失败,);,e.printStackTrace,( );,12,访问数据库,创建数据库连接,使用,JDBC-ODBC,桥的方式加载驱动程序与创建连接方法的语法格式如下:,Class.forName,(,驱动程序名称,);,Connection,conn,=,DriverManager.getConnection,(,jdbc,:, username, password);,在实际开发中经常使用第三方驱动方式来建立与数据库之间的连接。利用如下代码装载驱动类:,Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver,); /,支持,SQL Server 2000,Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver,); /,支持,SQL Server 2005,13,访问数据库,创建数据库连接,创建连接对象时无需指明数据源,而是使用包含,JDBC,协议、地址、端口和数据库名称的,url,地址,来定位数据库,代码如下:,Connection,conn,=,DriverManager.getConnection,(,jdbc:sqlserver:/localhost:1433;databaseName=pubs, ,sa, ,sa,);,14,访问数据库,查询数据,创建好数据库连接对象后,就可以对数据库中的数据进行操作。,SELECT,查询是企业级应用系统最基本的操作,将数据库中的数据以某种视图模式显示给用户。代码步骤一般是基于,Connection,连接对象创建一个,Statement,对象,使用其,executeQuery,方法执行,SELECT,语句,返回结果一个,ResultSet,结果集对象。,15,访问数据库,查询数据,【,例,13.2】,查询输出数据库,pubs,中,employee,表的全部记录数据。,Connection,conn,= null; /,声明Connection对象,Statement stmt = null; /,声明Statement对象,ResultSet,rs,= null; /,声明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_id,) + t);,System.out.print(rs.getString(fname,) + t);, catch (Exception e),finally ,rs.close,( );,stmt.close,( );,conn.close,( ); ,16,访问数据库,查询数据,【,例,13.3】,查询数据库,pubs,中,employee,表的第,2,条记录数据,输出其,emp_id,、,fname,、,lname,和,hire_date,字段。,Connection,conn,= null; /,声明Connection对象,Statement stmt = null; /,声明Statement对象,ResultSet,rs,= null; /,声明ResultSet对象,try ,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.print(rs.getString(emp_id,) + t);,System.out.print(rs.getString(fname,) + t);, catch (Exception e),finally ,rs.close,( );,stmt.close,( );,conn.close,( ); ,17,访问数据库,更新数据,【,例,13.4】,向数据库,pubs,的,employee,表中插入一条记录,并根据,emp_id,查询出该条记录的数据。,public class,InsertDemo,private Connection,conn,= null;,private Statement stmt = null;,private,ResultSet,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) ,stmt.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(fname,) + 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,+ , +,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;,18,访问数据库,更新数据,【,例,13.5】,修改例,13.4,中插入的记录,并输出更新后的结果。,/,数据修改,public,boolean,update(String,emp_id, String,minit,) ,openConn,( ); /,打开数据库连接,try ,String,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;,19,访问数据库,更新数据,【,例,13.6】,删除例,13.5,中插入的记录,并根据,emp_id,查询是否还存在该记录。,/,数据删除,public,boolean,delete(String,emp_id,) ,openConn,( );,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;,20,使用预编译,SQL,语句,利用,Statement,对象执行,SQL,语句中存在执行效率的问题,即每次都将整条,SQL,语句发送到数据库执行。可以考虑使用预编译,SQL,语句。使用预编译语句不需要数据库对相同的,SQL,语句进行分析和编译,即可直接运行,这种方法大大提高执行效率。,例如,查询某指定,pub_id,的所有,employee,信息:,String,sql,= select * from employee where,pub_id,=?;,其中,查询字符串中的问号“,?”,是输入参数的占位符。这些占位符对应于数据库中的变量,称为绑定变量。使用绑定变量的查询被编译一次,随后把这个查询作为一个模板。如果以后再执行该查询,将直接使用该模板运行。,21,使用预编译,SQL,语句,【,例,13.7】,使用,PreparedStatement,执行,SQL,语句,查询,pub_id,为“,9952”,的所有,employee,信息。,/,数据删除,public void,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,( ); ,22,总结,熟练,java.sql,包的使用,掌握使用,JDBC,技术访问数据库,掌握预编译执行,SQL,语句,23,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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