JDBC接口的基本介绍.ppt

上传人:牧羊曲112 文档编号:5436286 上传时间:2023-07-06 格式:PPT 页数:21 大小:552KB
返回 下载 相关 举报
JDBC接口的基本介绍.ppt_第1页
第1页 / 共21页
JDBC接口的基本介绍.ppt_第2页
第2页 / 共21页
JDBC接口的基本介绍.ppt_第3页
第3页 / 共21页
JDBC接口的基本介绍.ppt_第4页
第4页 / 共21页
JDBC接口的基本介绍.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《JDBC接口的基本介绍.ppt》由会员分享,可在线阅读,更多相关《JDBC接口的基本介绍.ppt(21页珍藏版)》请在三一办公上搜索。

1、为什么需要JDBC,JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力,Java应用程序,JDBC,JDBC,JSP/Servlet,客户端,数据库服务器,应用服务器,数据库服务器,客户端,JDBC程序的工作原理,JDBC API提供者:sun公司内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:DriverManager类Connection接口Statement接口ResultSet接口DriverManager提供者:sun公司作用:载入各种不同的JDBC驱动JDBC 驱动提供者:数据库厂商作用:负责连接各种不同的数据库,Sql Serv

2、er,Oracle,JDBC API,JDBC Driver Manager,JDBC 驱动,JDBC 驱动,Java 应用程序,JDBC API,JDBC API可做三件事:与数据库建立连接、执行SQL 语句、处理结果,Connection,DriverManager,Statement,ResultSet,DriverManager:依据数据库的不同,管理JDBC驱动 Connection:负责连接数据库并担任传送数据的任务 Statement:由 Connection 产生、负责执行SQL语句 ResultSet:负责保存Statement执行后所产生的查询结果,客户端,数据库服务器,1

3、,2,3,4,JDBC程序的工作模板,try Class.forName(JDBC驱动类);catch(ClassNotFoundException e)System.out.println(无法找到驱动类);try Connection con=DriverManager.getConnection(JDBC URL,数据库用户名,密码);Statement stmt=con.createStatement();ResultSet rs=stmt.executeQuery(SELECT a,b,c FROM Table1);while(rs.next()int x=rs.getInt(a);

4、String s=rs.getString(b);float f=rs.getFloat(c);con.close();catch(SQLException e)e.printStackTrace();,获得数据库连接,发送Sql语句,处理结果,注册JDBC驱动,JDBC URL用来标识数据库,必须处理的异常,释放资源,必须处理的异常,JDBC驱动,JDBC驱动由数据库厂商提供在个人开发与测试中,可以使用JDBC-ODBC桥连方式在生产型开发中,推荐使用纯Java驱动方式,DB Server,DBServer,JDBC API,JDBC Driver Manager,纯Java 驱动,JDBC

5、ODBC桥,Java 应用程序,ODBC,JDBC驱动,桥连将对JDBC API的调用,转换为对另一组数据库连接API的调用优点:可以访问所有ODBC可以访问的数据库缺点:执行效率低、功能不够强大,JDBC-ODBC桥,Java 应用程序,JDBC API,ODBC API,ODBC层,DBServer,JDBC驱动,纯Java驱动由JDBC驱动直接访问数据库优点:100%Java,快又可跨平台缺点:访问不同的数据库需要下载专用的JDBC驱动,JDBC 驱动,Java 应用程序,JDBC API,DBServer,JDBC驱动,使用纯Java驱动方式进行直连1、下载数据库厂商提供的驱动程序包2

6、、将驱动程序包引入工程中3、编写代码,通过纯Java驱动方式与数据库建立连接,-语法-String URL=jdbc:mysql:/localhost:3306/databaseName;Class.forName();Connection con=DriverManager.getConnection(URL,“root”,“密码);,sql server数据库驱动类的完全限定类名,演示:在工程中引入JDBC驱动程序包,数据库名称,小结,JDBC桥连与纯Java驱动两种方式的优缺点分别是什么?JDBC URL的作用是什么?,JDBC 程序访问数据库的步骤,开 始,导入 java.sql包,加

7、载并注册驱动程序,创建一个 Connection 对象,创建一个 Statement 对象,执行语句,关闭ResultSet 对象,关闭Statement对象,关闭连接,结 束,使用ResultSet对象,开 始,导入 java.sql包,加载并注册驱动程序,创建一个 Connection 对象,创建一个 Statement 对象,执行语句,关闭ResultSet 对象,使用ResultSet对象,创建数据表:FirstLevelTitle,JDBC应用,要求对新闻标题进行管理:1、新闻标题存储在MySQL中2、通过JDBC对新闻标题进行增、删、改、查操作,操作步骤,使用Statement插入

8、数据,使用PreparedStatement增、删、改、查数据,1,2,JDBC 查询,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 编写此查询,则代码

9、为:,Statement接口,使用PreparedStatement插入数据,使用桥连方式向FirstLevelTitle表中插入一条记录,代码片断public static void main(String args)Connection con=null;PreparedStatement statement=null;try String strSql=insert into FirstLevelTitle values(1,军事,网管,getdate();try Class.forName(com.mysql.jdbc.Driver);catch(ClassNotFoundExcept

10、ion e)System.out.println(无法找到驱动类);con=DriverManager.getConnectionjdbc:mysql:/localhost:3306/databaseName“,sa,sa);statement=con.createStatement();statement.executeUpdate();catch(SQLException sqlE)sqlE.printStackTrace();finally closeStatement(statement);closeConnection(con);,建立连接,执行sql语句,数据库连接使用完毕,及时释

11、放,载入JDBC-ODBC桥驱动类,异常处理,异常处理,使用PreparedStatement插入数据,使用纯Java驱动方式向FirstLevelTitle表中 插入一条记录,代码片断public static void main(String args)Connection con=null;Statement statement=null;try String strSql=insert into FirstLevelTitle values(1,军事,网管,getdate();try Class.forName(com.microsoft.sqlserver.jdbc.SQLServe

12、rDriver);catch(ClassNotFoundException e)System.out.println(无法找到驱动类);con=DriverManager.getConnection(“jdbc:mysql:/localhost:3306/databaseName“,“root”,”密码);statement=con.createStatement();statement.executeUpdate(strSql);catch(SQLException sqlE)sqlE.printStackTrace();finally/释放连接,载入sql server数据库驱动类,建立连

13、接,执行sql语句,小结,在使用纯Java驱动方式进行数据库连接时,如果程序在运行时抛出异常:java.sql.SQLException:No suitable driver found for jdbc:sqlserver:/localhost:1433;DatabaseName=news 那么出错的原因是什么?如何解决?请单独建立一个类ConnectionManager,专门负责建立数据库连接、以及关闭连接,并思考这样做带来的好处是什么,找不到合适的驱动类,原因:没有把数据库驱动包引入工程,好处在于:既便于管理、又可以提高代码的复用性,PreparedStatement,PreparedS

14、tatement接口(预编译的 SQL 语句),Statement 接口,当SQL语句将运行多次时,尽量使用PreparedStatement,以便提高运行效率,PreparedStatement 接口继承 Statement接口PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率,使用PreparedStatement插入数据,public class NewsFirstTitleDB2 public static void main(String args)Connection con=null;PreparedStatement pStatement

15、=null;try SimpleDateFormat hmFromat=new SimpleDateFormat(yyyy-MM-dd hh:mm:ss);con=ConnectionManager.getConnection();String strSql=insert into FirstLevelTitle values(?,?,?,?);pStatement=con.prepareStatement(strSql);pStatement.setInt(1,1);pStatement.setString(2,军事);pStatement.setString(3,管理员);pStateme

16、nt.setString(4,hmFromat.format(new Date();pStatement.executeUpdate();catch(SQLException sqlE)sqlE.printStackTrace();finally ConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(con);,参数化的查询语句,设置每个?参数的值,列号从1开始,执行sql语句,使用PreparedStatement删除数据,public class NewsFirstTitleDB3 pu

17、blic static void main(String args)Connection con=null;PreparedStatement pStatement=null;try con=ConnectionManager.getConnection();String strSql=delete from FirstLevelTitle where TitleName=?;pStatement=con.prepareStatement(strSql);pStatement.setString(1,军事);int row=pStatement.executeUpdate();System.o

18、ut.println(“成功删除了+row+行数据!);catch(SQLException sqlE)sqlE.printStackTrace();finally ConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(con);,返回删除记录的行数,使用PreparedStatement更新数据,public class NewsFirstTitleDB4 public static void main(String args)Connection con=null;PreparedSta

19、tement pStatement=null;try con=ConnectionManager.getConnection();String strSql=update FirstLevelTitle set Creator=?where Id=?;pStatement=con.prepareStatement(strSql);pStatement.setString(1,编辑);pStatement.setInt(2,1);int row=pStatement.executeUpdate();System.out.println(成功更新了+row+行数据!);catch(SQLExcep

20、tion sqlE)sqlE.printStackTrace();finally ConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(con);,返回更新记录的行数,小结,使用PreparedStatement语句执行如下操作:删除表FirstLevelTitle中所有Id小于10的记录,并在控制台输出删除记录的行数,小结,使用PreparedStatement语句执行如下操作:取出表FirstLevelTitle中Id的最大值。向表FirstLevelTitle中插入一行新记录,其中Id值为原Id最大值加一。,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号