JDBC接口的基本介绍参考PPT.ppt

上传人:rrsccc 文档编号:9257171 上传时间:2021-02-12 格式:PPT 页数:22 大小:580KB
返回 下载 相关 举报
JDBC接口的基本介绍参考PPT.ppt_第1页
第1页 / 共22页
JDBC接口的基本介绍参考PPT.ppt_第2页
第2页 / 共22页
JDBC接口的基本介绍参考PPT.ppt_第3页
第3页 / 共22页
JDBC接口的基本介绍参考PPT.ppt_第4页
第4页 / 共22页
JDBC接口的基本介绍参考PPT.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

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

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 驱动 提供者:数据库厂商 作用:负责连接各种不同的

2、数据库,Sql Server,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执行后所产生的查询

3、结果,客户端,数据库服务器,1,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

4、(rs.next() int x = rs.getInt(a); 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,DB Ser

5、ver,JDBC API,JDBC Driver Manager,纯Java 驱动,JDBCODBC桥,Java 应用程序,ODBC,JDBC驱动,桥连 将对JDBC API的调用,转换为对另一组数据库连接API的调用 优点:可以访问所有ODBC可以访问的数据库 缺点:执行效率低、功能不够强大,JDBC-ODBC桥,Java 应用程序,JDBC API,ODBC API,ODBC层,DB Server,JDBC驱动,纯Java驱动 由JDBC驱动直接访问数据库 优点:100% Java,快又可跨平台 缺点:访问不同的数据库需要下载专用的JDBC驱动,JDBC 驱动,Java 应用程序,JDBC

6、 API,DB Server,JDBC驱动,使用纯Java驱动方式进行直连 1、下载数据库厂商提供的驱动程序包 2、将驱动程序包引入工程中 3、编写代码,通过纯Java驱动方式与数据库建立连接,-语法- String URL=jdbc:mysql:/localhost:3306/databaseName; Class.forName(com.mysql.jdbc.Driver); Connection con = DriverManager.getConnection(URL,“root”,“密码);,sql server数据库驱动类的完全限定类名,演示:在工程中引入JDBC驱动程序包,数据库

7、名称,小结,JDBC桥连与纯Java驱动两种方式的优缺点分别是什么? JDBC URL的作用是什么?,10,JDBC 程序访问数据库的步骤,开 始,导入 java.sql包,加载并注册驱动程序,创建一个 Connection 对象,创建一个 Statement 对象,执行语句,关闭ResultSet 对象,关闭Statement对象,关闭连接,结 束,使用ResultSet对象,开 始,导入 java.sql包,加载并注册驱动程序,创建一个 Connection 对象,创建一个 Statement 对象,执行语句,关闭ResultSet 对象,使用ResultSet对象,创建数据表:First

8、LevelTitle,JDBC应用,要求对新闻标题进行管理: 1、新闻标题存储在MySQL中 2、通过JDBC对新闻标题进行增、删、改、查操作,操作步骤,使用Statement插入数据,使用PreparedStatement增、删、改、查数据,1,2,JDBC 查询,SQL 查询字符串,executeQuery() 方法,作为参数传递,ResultSet,返回查询数据,SELECT name, email, phone FROM colleagues;,使用 SQL 语句,查询可编写为:,String str = SELECT emp_id, lname, fname FROM colleag

9、ues; Statement stmt = con.createStatement(); ResultSet rset = stmt.executeQuery(str);,使用 JDBC 编写此查询,则代码为:,Statement接口,使用PreparedStatement插入数据,使用桥连方式向FirstLevelTitle表中插入一条记录,代码片断 public static void main(String args) Connection con = null; PreparedStatement statement = null; try String strSql = insert

10、 into FirstLevelTitle values(1,军事,网管,getdate(); try Class.forName( com.mysql.jdbc.Driver ); catch (ClassNotFoundException e) System.out.println(无法找到驱动类); con = DriverManager.getConnectionjdbc:mysql:/localhost:3306/databaseName “,sa,sa); statement = con.createStatement(); statement.executeUpdate(); c

11、atch (SQLException sqlE) sqlE.printStackTrace(); finally closeStatement(statement); closeConnection(con); ,建立连接,执行sql语句,数据库连接使用完毕,及时释放,载入JDBC-ODBC桥驱动类,异常处理,异常处理,使用PreparedStatement插入数据,使用纯Java驱动方式向FirstLevelTitle表中 插入一条记录,代码片断 public static void main(String args) Connection con = null; Statement sta

12、tement = null; try String strSql = insert into FirstLevelTitle values(1,军事,网管,getdate(); try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch (ClassNotFoundException e) System.out.println(无法找到驱动类); con = DriverManager.getConnection(“jdbc:mysql:/localhost:3306/databaseName “,“root”,

13、”密码); statement = con.createStatement(); statement.executeUpdate(strSql); catch (SQLException sqlE) sqlE.printStackTrace(); finally /释放连接 ,载入sql server数据库驱动类,建立连接,执行sql语句,小结,在使用纯Java驱动方式进行数据库连接时,如果程序在运行时抛出异常: java.sql.SQLException: No suitable driver found for jdbc:sqlserver:/localhost:1433;Database

14、Name=news 那么出错的原因是什么?如何解决? 请单独建立一个类ConnectionManager,专门负责建立数据库连接、以及关闭连接,并思考这样做带来的好处是什么,找不到合适的驱动类,原因:没有把数据库驱动包引入工程,好处在于:既便于管理、又可以提高代码的复用性,PreparedStatement,PreparedStatement接口 (预编译的 SQL 语句),Statement 接口,当SQL语句将运行多次时,尽量使用PreparedStatement,以便提高运行效率,PreparedStatement 接口继承 Statement接口 PreparedStatement比普

15、通的Statement对象使用起来更加灵活,更有效率,使用PreparedStatement插入数据,public class NewsFirstTitleDB2 public static void main(String args) Connection con = null; PreparedStatement pStatement = null; try SimpleDateFormat hmFromat = new SimpleDateFormat(yyyy-MM-dd hh:mm:ss); con = ConnectionManager.getConnection(); Strin

16、g strSql = insert into FirstLevelTitle values(?,?,?,?); pStatement = con.prepareStatement(strSql); pStatement.setInt(1, 1); pStatement.setString(2, 军事); pStatement.setString(3, 管理员); pStatement.setString(4, hmFromat.format(new Date(); pStatement.executeUpdate(); catch (SQLException sqlE) sqlE.printS

17、tackTrace(); finally ConnectionManager.closeStatement(pStatement); ConnectionManager.closeConnection(con); ,参数化的查询语句,设置每个?参数的值,列号从1开始,执行sql语句,使用PreparedStatement删除数据,public class NewsFirstTitleDB3 public static void main(String args) Connection con = null; PreparedStatement pStatement = null; try co

18、n = ConnectionManager.getConnection(); String strSql = delete from FirstLevelTitle where TitleName = ?; pStatement = con.prepareStatement(strSql); pStatement.setString(1, 军事); int row = pStatement.executeUpdate(); System.out.println(“成功删除了+row+行数据!); catch (SQLException sqlE) sqlE.printStackTrace();

19、 finally ConnectionManager.closeStatement(pStatement); ConnectionManager.closeConnection(con); ,返回删除记录的行数,使用PreparedStatement更新数据,public class NewsFirstTitleDB4 public static void main(String args) Connection con = null; PreparedStatement pStatement = null; try con = ConnectionManager.getConnection(

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

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1