




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JDBC 数据库运用 简介 JDBC(Java Data Base Connectivity) 1996年,sun公司提出。是一种用于执行SQL语句的Java API,可以为多种关系数据库提供一致访问,它由一组用Java言语编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员可以编写数据库运用程序 用途:和数据可建立衔接,发送SQL语句,处置数据库前往的结果集 JDBC主要完成的任务1. 注册JDBC驱动程序2.建立与数据库的衔接3.运用SQL语句进展数据库操作4.封锁相关衔接注册JDBC驱动程序 Class.forname(“com.mysql.jdb
2、c.Driver);常用 Class.forname(“com.microsofe.sqlserver.jdbc.SQLServerDriver);常用 DriverManager.registerDriver(com.mysql.jdbc.Driver);会呵斥DriverManager中产生两个一样的驱动,并会对详细的驱动类产生依赖 System.setProperty(“jdbc.drivers, “driver1: driber2);虽然不会对详细的驱动类产生依赖,但注册不太方便,所以很少运用 驱动类型:JDBC-ODBC桥+ODBC驱动程序;本地API;JDBC网络纯Java驱动程序
3、;本地协议纯Java驱动程序建立与数据库的衔接 Connection con = DriverManger.getConnection(url, username, password); url格式: JDBC:子协议:子称号/主机名:端口/数据库名 如:mysql本地数据库:jdbc:mysqllocalhost:3306/数据库名字 Username,Password为数据库的登陆名和密码,运用“属性名=属性值的方式 如:Connection con = DriverManager.getConnection(jdbc:mysqllocalhost:3306/test, root, roo
4、t);运用SQL进展数据库操作 运用JDBC执行SQL语句前,必需先创建Statement对象。调用Conection对象的createStatement()方法,该方法前往一个Statement对象 运用如下方式: Statement stmt = con.createStatement(); 运用statement对象发送SQL语句运用SQL进展数据库操作对数据库的操作主要有:添加,删除,修正,查看四种。添加:Sql语句:insert into 表名(field1 , field2) values(value1,value2);如:insert into student(id , name
5、) values(“001,李明);发送sql语句:statement.executeUpdate(sql);前往的结果:int1代表胜利,0代表失败运用SQL进展数据库操作删除:SQL语句:delete from 表名where 范围如:delete from student where id=001;发送sql语句:statement.executeUpdate(sql);前往的结果:int1代表胜利,0代表失败运用SQL进展数据库操作修正:SQL语句:update 表名set field1=value1 where 范围如:update student set name=李四 where
6、 id=001;发送sql语句:statement.executeUpdate(sql);前往的结果:int1代表胜利,0代表失败运用SQL进展数据库操作查看:SQL语句:select * from 表名 where 范围如:select * from student where id=001;发送sql语句:statement.executeQuery(sql);前往的结果:resultSet (结果集) resultSet .next()查找下一个;resultSet. getString(id)取出一个对象的属性运用SQL进展数据库操作 总结: 增、删、改用Statement.execu
7、teUpdate来完成,前往整数(匹配的记录数),这类操作相对简单。 查询用Statement.executeQuery来完成,前往的是ResultSet对象,ResultSet中包含了查询的结果;查询相对与增、删、改要复杂一些,由于有查询结果要处置。封锁相关衔接 翻开的资源运用完成后应该封锁 resultSet.close(); Statement.close(); Connection.close(); 留意:资源封锁的顺序应该和翻开的顺序相反 翻开的资源必需封锁,不然会呵斥对资源的浪费,并且再次衔接时会无法衔接SQLSQL注入注入,PreparedStatement,PreparedSt
8、atement和和Statement Statement 在SQL中包含特殊字符或SQL的关键字(如: or 1 or )时Statement将出现不可预料的结果出现异常或查询的结果不正确,可用PreparedStatement来处理。 PreperedStatement从Statement扩展而来相对Statement的优点: 1.没有SQL注入的问题。 2.Statement会使数据库频繁编译SQL,能够呵斥数据库缓冲区溢出。 3.数据库和驱动可以对PreperedStatement进展优化只需在相关联的数据库衔接没有封锁的情况下有效。 数据类型数据类型 详细信息见java.sql.Typ
9、es 几种特殊且比较常用的类型 1.DATA,TIME,TIMESTAMP date,time,datetime 存:ps.setDate(i,d); ps.setTime(i,t); ps.setTimestamp(i, ts); 取:rs.getDate(i); rs.getTime(i); rs.getTimestamp(i); 2.CLOB text 存:ps.setCharacterStream(index, reader, length); ps.setString(i, s); 取:reader = rs. getCharacterStream(i); reader = rs.g
10、etClob(i).getCharacterStream(); string = rs.getString(i); 数据类型数据类型3.BLOB blob 存:ps.setBinaryStream(i, inputStream, length); 取:rs.getBinaryStream(i); rs.getBlob(i).getBinaryStream(); 一个简单用户相关的数据访问层一个简单用户相关的数据访问层 J2EE三层架构简介 表示层 、业务逻辑层、数据访问层,三层之间用接口隔离。 定义domain对象User,定义存取用户的接口 用JDBC实现接口 用配置文件(propertie
11、s)和反射实现与详细类的耦合 事务事务(ACID)(ACID) 原子性(atomicity):组成事务处置的语句构成了一个逻辑单元,不能只执行其中的一部分。 一致性(consistency):在事务处置执行前后,数据库是一致的(两个账户要么都变,或者都不变)。 隔离性(isolcation):一个事务处置对另一个事务处置没有影响。 继续性(durability):事务处置的效果可以被永久保管下来 。 connection.setAutoCommit(false);/翻开事务。 connectionmit();/提交事务。 connection.rollback();/回滚事务。隔离级别多线程并
12、发读取数据时的正隔离级别多线程并发读取数据时的正确性确性 connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); V:能够出现,X:不会出现隔离级别隔离级别 脏读脏读 不可重复读不可重复读 幻读幻读 读未提交(Read uncommitted)VVV读已提交(Read committed)xVV可重复读(Repeatable read)xxV可串行化(Serializable )xxx存储过程 存储过程 CallableStatement从PreperedStatement扩展来 cs = conne
13、ction.prepareCall(“call psname(?,?,?); cs.registerOutParameter(index, Types.INTEGER); cs.setXXX(i, xxxx); cs.executeUpdate(); int id=cs.getInt(index);其他的几个其他的几个APIAPI Statement.getGeneratedKeys() PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); ps.executeUpda
14、te(); ResultSet rs = st.getGeneratedKeys();rs.getInt(1); 批处置,可以大幅度提升大量增、删、改的速度。 PreparedStatement.addBatch(); PreparedStatement.executeBatch();其他的几个其他的几个APIAPI 可滚动的结果集 Statement st = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = st.executeQue
15、ry(sql); rs.beforeFirst(); rs.afterLast();rs.first();rs.isFirst();rs.last();rs.isLast(); rs.absolute(9);rs.moveToInsertRow();DatabaseMetaData DatabaseMetaData meta = connection.getMetaData(); 经过DatabaseMetaData可以获得数据库相关的信息如:数据库版本、数据库名、数据库厂商信息、能否支持事务、能否支持某种事务隔离级别,能否支持滚动结果集等。ResultSetMetaData ResultSe
16、tMetaData meta = rs.getMetaData(); 经过ResultSetMetaData可以获得结果有几列、各列名、各列别名、各列类型等。 可以将ResultSet放入Map(key:列名 value:列值)。 用反射ResultSetMetaData将查询结果读入对象中简单的O/RMapping 1)让SQL语句中列别名和要读入的对象属性名一样; 2)经过ResultSetMetaData获得结果列数和列别名; 3)经过反射将对象的一切setXxx方法找到; 4)将3找到的方法setXxx和2找到的列别名进展匹配即方法中的xxx于列别名相等; 5)由上一步找到的方法和列别
17、名对应关系进展赋值 Method.invoke(obj, rs.getObject(columnAliasName);数据源和衔接池数据源和衔接池 DataSource用来取代DriverManager来获取Connection; 经过DataSource获得Connection速度很快; 经过DataSource获得的Connection都是曾经被包裹过的不是驱动原来的衔接,他的close方法曾经被修正。 普通DataSource内部会用一个衔接池来缓存Connection,这样可以大幅度提高数据库的访问速度; 衔接池可以了解成一个可以存放Connection的Collection; 我们的
18、程序只和DataSource打交道,不会直接访问衔接池;一个简单的数据源实现一个简单的数据源实现 运用装饰方式的Connection(中心代码) class MyConnection implements Connection private Connection realConn; private LinkedList connPool; MyConnection(Connection rConn, LinkedList cPool) this.realConn=rConn; this.connPool=cPool; public void close() this.connPool.addLast(this);/.一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医学及护理知识考试题库及答案
- 汽车配件电商行业市场分析
- 有机鸡肉调理品创新创业项目商业计划书
- 甘肃省武威市古浪县大靖初级中学2024-2025学年九年级上学期期末考试语文试题(无答案)
- 安徽省安庆市怀宁县部分学校联考2026届九年级上学期10月月考历史试卷(含答案)
- 糕点烘烤炉智能控制行业跨境出海项目商业计划书
- 耐磨滑轨与滑块系统企业制定与实施新质生产力项目商业计划书
- 项目监控招投标文件编写指南
- 分析天平考试试题及答案
- 社交媒体招聘效果评估创新创业项目商业计划书
- 矿山道路土路施工方案
- 丽水2025年丽水市生产力和投资促进中心招聘4人笔试历年参考题库附带答案详解
- 2025-2026学年人教版(2024)初中生物八年级上册(全册)教学设计(附目录)
- 汽车展示大厅设计方案
- HAZOP分析法在绿氢制氢站工艺风险评估中的应用探索
- 2025年云南省劳动合同书版
- 吊绳外墙施工方案
- 周转材料质量验收标准
- 北京MBA实战课堂《管理学课堂游戏》的演示与运用
- 医药耗材管理培训课件
- 2026中南电力设计院有限公司校园招聘考试参考题库及答案解析
评论
0/150
提交评论