版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、为什么需要jdbc jdbc是java数据库连接技术的简称,提供连接各种常用数据库的能力 java应用程序应用程序 jdbcjdbcjsp/servlet客客户户端端数据库服务器数据库服务器应用服务器应用服务器数据库服务器数据库服务器客客户户端端jdbc程序的工作原理 jdbc api 提供者:sun公司 内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如: drivermanager类 connection接口 statement接口 resultset接口 drivermanager 提供者:sun公司 作用:载入各种不同的jdbc驱动 jdbc 驱动 提供者
2、:数据库厂商 作用:负责连接各种不同的数据库jdbc api jdbc driver manager jdbc 驱动驱动 jdbc 驱动驱动 java 应用程序应用程序 jdbc api jdbc api可做三件事:与数据库建立连接、执行sql 语句、处理结果connectiondrivermanagerstatementresultset drivermanager :依据数据库的不同,管理:依据数据库的不同,管理jdbc驱动驱动 connection :负责连接数据库并担任传送数据的任务:负责连接数据库并担任传送数据的任务 statement :由由 connection 产生、负责执行产
3、生、负责执行sql语句语句 resultset:负责保存:负责保存statement执行后所产生的查询结果执行后所产生的查询结果客客户户端端数据库服务器数据库服务器1234jdbc程序的工作模板try class.forname(jdbc驱动类驱动类); catch (classnotfoundexception e) system.out.println(无法找到驱动类无法找到驱动类);try connection con=drivermanager.getconnection(jdbc url,数据库用户名数据库用户名,密码密码); statement stmt = con.creates
4、tatement(); resultset rs = stmt.executequery(select a, b, c from table1); while (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用来标识数据库用来标识数据库 必须处理的异常必须
5、处理的异常释放资源释放资源必须处理的异常必须处理的异常jdbc驱动 jdbc驱动由数据库厂商提供 在个人开发与测试中,可以使用jdbc-odbc桥连方式 在生产型开发中,推荐使用纯java驱动方式jdbc apijdbc driver manager纯纯java 驱动驱动 jdbcodbc桥桥java 应用程序应用程序 odbcjdbc驱动 桥连 将对jdbc api的调用,转换为对另一组数据库连接api的调用 优点:可以访问所有odbc可以访问的数据库 缺点:执行效率低、功能不够强大jdbc-odbc桥桥java 应用程序应用程序 jdbc apiodbc apiodbc层层jdbc驱动 纯
6、java驱动 由jdbc驱动直接访问数据库 优点:100% java,快又可跨平台 缺点:访问不同的数据库需要下载专用的jdbc驱动jdbc 驱动驱动 java 应用程序应用程序 jdbc api jdbc驱动使用纯java驱动方式进行直连1、下载数据库厂商提供的驱动程序包2、将驱动程序包引入工程中3、编写代码,通过纯java驱动方式与数据库建立连接-语法语法-string url=jdbc:mysql:/localhost:3306/databasename;class.forname(com.mysql.jdbc.driver);connection con = drivermanager
7、.getconnection(url,“root”,“密码密码);sql server数据库驱动类的数据库驱动类的完全限定类名完全限定类名演示:在工程中引入演示:在工程中引入jdbc驱动程序包驱动程序包 数据库名称数据库名称小结 jdbc桥连与纯java驱动两种方式的优缺点分别是什么? jdbc url的作用是什么?10jdbc 程序访问数据库的步骤 开 始导入 java.sql包 加载并注册驱动程序创建一个 connection 对象创建一个 statement 对象执行语句关闭resultset 对象关闭statement对象关闭连接结 束使用resultset对象开 始导入 java.s
8、ql包 加载并注册驱动程序创建一个 connection 对象创建一个 statement 对象执行语句关闭resultset 对象使用resultset对象创建数据表:创建数据表:firstleveltitle jdbc应用要求对新闻标题进行管理:1、新闻标题存储在mysql中2、通过jdbc对新闻标题进行增、删、改、查操作操作步骤操作步骤 使用使用statement插入数据插入数据使用使用preparedstatement增增、删、改、查数据、删、改、查数据字段名称字段名称字段说明字段说明数据类型数据类型大小大小id序号序号inttitlename标题名称标题名称varchar50crea
9、tor创建者创建者varchar50createtime创建时间创建时间datetime812jdbc 查询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);使
10、用 jdbc 编写此查询,则代码为: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.dr
11、iver ); catch (classnotfoundexception 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(statemen
12、t);closeconnection(con);建立连接建立连接执行执行sql语句语句数据库连接使用完数据库连接使用完毕,及时释放毕,及时释放载入载入jdbc-odbc桥驱动类桥驱动类异常处理异常处理异常处理异常处理使用preparedstatement插入数据 使用纯java驱动方式向firstleveltitle表中 插入一条记录 代码片断代码片断public static void main(string args) connection con = null;statement statement = null;try string strsql = insert into first
13、leveltitle 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”,”密码密码);statement = con.createstatement();st
14、atement.executeupdate(strsql); catch (sqlexception sqle) sqle.printstacktrace(); finally /释放连接释放连接载入载入sql server数据库数据库驱动类驱动类建立连接建立连接执行执行sql语句语句小结 在使用纯java驱动方式进行数据库连接时,如果程序在运行时抛出异常: java.sql.sqlexception: no suitable driver found for jdbc:sqlserver:/localhost:1433;databasename=news 那么出错的原因是什么?如何解决? 请
15、单独建立一个类connectionmanager,专门负责建立数据库连接、以及关闭连接,并思考这样做带来的好处是什么 找不到合适的驱动类,原因:没有把数据库驱动包引入工程找不到合适的驱动类,原因:没有把数据库驱动包引入工程 好处在于:既便于管理、又可以提高代码的复用性好处在于:既便于管理、又可以提高代码的复用性 preparedstatement preparedstatement接口接口 (预编译的(预编译的 sql 语句)语句) statement 接口接口 当当 sql 语句将运行多次时,尽量语句将运行多次时,尽量使用使用preparedstatement,以便提,以便提高运行效率高运行
16、效率 preparedstatement 接口继承 statement接口 preparedstatement比普通的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:
17、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.format(new date();pstatement.exe
18、cuteupdate(); catch (sqlexception sqle) sqle.printstacktrace(); finally connectionmanager.closestatement(pstatement);connectionmanager.closeconnection(con);参数化的查询语句参数化的查询语句设置每个设置每个 ? 参数的值,参数的值,列号从列号从1开始开始执行执行sql语句语句使用preparedstatement删除数据public class newsfirsttitledb3 public static void main(string
19、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.out.printl
20、n(“成功删除了成功删除了+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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险经纪人从业资格考试综合知识模拟试卷
- 保险经纪人从业资格考试保险产品知识专项训练题库
- 昆明五华区2026-2027学年六年级上册数学单元测试卷第一单元
- 2026机械设备巡检试题及答案
- 2025年工贸企业火灾应急疏散与救援能力考核试卷及答案
- 浙江省杭州下城区五校联考2027届数学九上期末学业质量监测试题含解析
- 广东省普宁市燎原中学2027届数学七上期末调研模拟试题含解析
- 2027届陕西省西安市(师大附中)数学九上期末达标测试试题含解析
- 2026年吉林省榆树市高二生物上册期末考试模拟卷带答案(B卷)
- 2026年监理工程师考试建设工程施工组织设计专项习题及答案
- 耳鼻喉科手术的麻醉课件
- (完整版)2026年二级建造师继续教育考试题库及答案
- 河北省石家庄市第四十三中学2025-2026学年上学期期中考试九年级数学试题(含答案)
- 2026年中医内科医师高频面试题包含详细解答
- 国家重点保护野生植物识别鉴定工作手册
- 大班幼儿家庭教育案例分享
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
- 2026年全国两会解读:基层治理能力提升
- 装配错装漏装考核制度
- 第二单元混合运算单元测试卷(含答案) 2025-2026学年人教版三年级数学上册
- BRC第九版认证取证审核准备资料清单
评论
0/150
提交评论