版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、为什么需要JDBCJDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力 Java应用程序 JDBCJDBCJSP/Servlet客户端数据库服务器应用服务器数据库服务器客户端2021/9/291JDBC程序的工作原理JDBC API提供者:sun公司内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:DriverManager类Connection接口Statement接口ResultSet接口DriverManager提供者:sun公司作用:载入各种不同的JDBC驱动JDBC 驱动提供者:数据库厂商作用:负责连接各种不同的数据库Sql Serve
2、rOracleJDBC API JDBC Driver Manager JDBC 驱动 JDBC 驱动 Java 应用程序 2021/9/292JDBC APIJDBC API可做三件事:与数据库建立连接、执行SQL 语句、处理结果ConnectionDriverManagerStatementResultSet DriverManager :依据数据库的不同,管理JDBC驱动 Connection :负责连接数据库并担任传送数据的任务 Statement :由 Connection 产生、负责执行SQL语句 ResultSet:负责保存Statement执行后所产生的查询结果客户端数据库服务
3、器12342021/9/293JDBC程序的工作模板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(
4、) 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用来标识数据库 必须处理的异常释放资源必须处理的异常2021/9/294JDBC驱动JDBC驱动由数据库厂商提供在个人开发与测试中,可以使用JDBC-ODBC桥连方式在生产型开发中,推荐使用纯Java驱动方式DB ServerDBServerJDBC APIJDB
5、C Driver Manager纯Java 驱动 JDBCODBC桥Java 应用程序 ODBC2021/9/295JDBC驱动桥连将对JDBC API的调用,转换为对另一组数据库连接API的调用优点:可以访问所有ODBC可以访问的数据库缺点:执行效率低、功能不够强大JDBC-ODBC桥Java 应用程序 JDBC APIODBC APIODBC层DBServer2021/9/296JDBC驱动纯Java驱动由JDBC驱动直接访问数据库优点:100% Java,快又可跨平台缺点:访问不同的数据库需要下载专用的JDBC驱动JDBC 驱动 Java 应用程序 JDBC API DBServer20
6、21/9/297JDBC驱动使用纯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驱动程序包 数据库名称2021/9/298小结 JD
7、BC桥连与纯Java驱动两种方式的优缺点分别是什么?JDBC URL的作用是什么?2021/9/299JDBC 程序访问数据库的步骤 开 始导入 java.sql包 加载并注册驱动程序创建一个 Connection 对象创建一个 Statement 对象执行语句关闭ResultSet 对象关闭Statement对象关闭连接结 束使用ResultSet对象开 始导入 java.sql包 加载并注册驱动程序创建一个 Connection 对象创建一个 Statement 对象执行语句关闭ResultSet 对象使用ResultSet对象2021/9/2910创建数据表:FirstLevelTitl
8、e JDBC应用要求对新闻标题进行管理:1、新闻标题存储在MySQL中2、通过JDBC对新闻标题进行增、删、改、查操作操作步骤 使用Statement插入数据使用PreparedStatement增、删、改、查数据字段名称字段说明数据类型大小Id序号intTitleName标题名称varchar50Creator创建者varchar50CreateTime创建时间datetime8122021/9/2911JDBC 查询SQL 查询字符串 executeQuery() 方法 作为参数传递ResultSet 返回查询数据SELECT name, email, phone FROM colleag
9、ues;使用 SQL 语句,查询可编写为:String str = SELECT emp_id, lname, fname FROM colleagues;Statement stmt = con.createStatement();ResultSet rset = stmt.executeQuery(str);使用 JDBC 编写此查询,则代码为:Statement接口2021/9/2912使用PreparedStatement插入数据使用桥连方式向FirstLevelTitle表中插入一条记录代码片断public static void main(String args) Connecti
10、on con = null;PreparedStatement statement = null;try String strSql = insert 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
11、“,sa,sa);statement = con.createStatement();statement.executeUpdate(); catch (SQLException sqlE) sqlE.printStackTrace(); finally closeStatement(statement);closeConnection(con);建立连接执行sql语句数据库连接使用完毕,及时释放载入JDBC-ODBC桥驱动类异常处理异常处理2021/9/2913使用PreparedStatement插入数据使用纯Java驱动方式向FirstLevelTitle表中 插入一条记录 代码片断pu
12、blic 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.SQLServerDriver); catch (ClassNotFoundException e) System.out.println(无法找到驱动类);con = DriverManag
13、er.getConnection(“jdbc:mysql:/localhost:3306/databaseName “,“root”,”密码);statement = con.createStatement();statement.executeUpdate(strSql); catch (SQLException sqlE) sqlE.printStackTrace(); finally /释放连接载入sql server数据库驱动类建立连接执行sql语句2021/9/2914小结在使用纯Java驱动方式进行数据库连接时,如果程序在运行时抛出异常: java.sql.SQLException
14、: No suitable driver found for jdbc:sqlserver:/localhost:1433;DatabaseName=news 那么出错的原因是什么?如何解决?请单独建立一个类ConnectionManager,专门负责建立数据库连接、以及关闭连接,并思考这样做带来的好处是什么 找不到合适的驱动类,原因:没有把数据库驱动包引入工程 好处在于:既便于管理、又可以提高代码的复用性 2021/9/2915PreparedStatement PreparedStatement接口 (预编译的 SQL 语句) Statement 接口 当SQL语句将运行多次时,尽量使用P
15、reparedStatement,以便提高运行效率 PreparedStatement 接口继承 Statement接口PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率 2021/9/2916使用PreparedStatement插入数据public class NewsFirstTitleDB2 public static void main(String args) Connection con = null;PreparedStatement pStatement = null;try SimpleDateFormat hmFromat = ne
16、w 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, 管理员);pStatement.setString(4, hmFromat.form
17、at(new Date();pStatement.executeUpdate(); catch (SQLException sqlE) sqlE.printStackTrace(); finally ConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(con);参数化的查询语句设置每个?参数的值,列号从1开始执行sql语句2021/9/2917使用PreparedStatement删除数据public class NewsFirstTitleDB3 public static void m
18、ain(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
19、ut.println(“成功删除了+row+行数据!); catch (SQLException sqlE) sqlE.printStackTrace(); finally ConnectionManager.closeStatement(pStatement);ConnectionManager.closeConnection(con); 返回删除记录的行数2021/9/2918使用PreparedStatement更新数据public class NewsFirstTitleDB4 public static void main(String args) Connection con = null;PreparedStatement pStatement = null;t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年三叉腰鼓形庭院灯项目投资价值分析报告
- 2024年暗装式小便感应冲水器项目可行性研究报告
- 车间安全培训试题【突破训练】
- 新版车间安全培训试题附参考答案(轻巧夺冠)
- LTE网络优化实施方案
- 外卖送餐服务的社区影响力考核试卷
- 白酒的渠道管理与市场渗透考核试卷
- 钢栈桥施工方案
- 时尚服饰展会与市场交流考核试卷
- 社会心理学在组织管理中的应用考核试卷
- 幼教培训课件:《幼儿园如何有效组织幼儿户外自主游戏》
- 17《爬天都峰》第一课时 公开课一等奖创新教学设计
- “非遗”之首-昆曲经典艺术欣赏智慧树知到期末考试答案章节答案2024年北京大学
- 股权投资撤资通知书
- 服务质量保障措施及进度保障措施
- 2024年美国健身器材市场现状及上下游分析报告
- 非物质文化遗产介绍-剪纸文化
- 针灸防治老年病
- 新版手术室管理规范
- 《物流成本管理》(朱伟生 第六版)课件全套 第1-12章 绪论、物流成本计算 - 物流成本绩效考评
- 微量元素与人体健康智慧树知到期末考试答案章节答案2024年吉林大学
评论
0/150
提交评论