




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编辑pptJDBC 数据库应用编辑ppt 简介 JDBC(Java Data Base Connectivity)1996年,sun公司提出。是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序用处:和数据可建立连接,发送SQL语句,处理数据库返回的结果集编辑ppt JDBC主要完成的工作1. 注册JDBC驱动程序2.建立与数据库的连接3.使用SQL语句进行数据库操作4.关闭相关连接编辑ppt注册JDBC驱动程序 Class.forn
2、ame(“com.mysql.jdbc.Driver”);常用 Class.forname(“com.microsofe.sqlserver.jdbc.SQLServerDriver”);常用 DriverManager.registerDriver(com.mysql.jdbc.Driver);会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖 System.setProperty(“jdbc.drivers”, “driver1: driber2”);虽然不会对具体的驱动类产生依赖,但注册不太方便,所以很少使用 驱动类型:JDBC-ODBC桥+ODBC驱动程序
3、;本地API;JDBC网络纯Java驱动程序;本地协议纯Java驱动程序编辑ppt建立与数据库的连接 Connection con = DriverManger.getConnection(url, username, password); url格式: JDBC:子协议:子名称/主机名:端口/数据库名如:mysql本地数据库:jdbc:mysql:/localhost:3306/数据库名字Username,Password为数据库的登陆名和密码,使用“属性名=属性值”的方式如:Connection con = DriverManager.getConnection(jdbc:mysql:/l
4、ocalhost:3306/test, root, root);编辑ppt使用SQL进行数据库操作 使用JDBC执行SQL语句前,必须先创建Statement对象。调用Conection对象的createStatement()方法,该方法返回一个Statement对象 使用如下方式: Statement stmt = con.createStatement();使用statement对象发送SQL语句编辑ppt使用SQL进行数据库操作对数据库的操作主要有:添加,删除,修改,查看四种。添加:Sql语句:insert into 表名(field1 , field2) values(value1,v
5、alue2);如:insert into student(id , name) values(“001”,”李明”);发送sql语句:statement.executeUpdate(sql);返回的结果:int(1代表成功,0代表失败)编辑ppt使用SQL进行数据库操作删除: SQL语句:delete from 表名where 范围如:delete from student where id=001;发送sql语句:statement.executeUpdate(sql);返回的结果:int(1代表成功,0代表失败)编辑ppt使用SQL进行数据库操作修改: SQL语句:update 表名set
6、 field1=value1 where 范围如:update student set name=李四 where id=001;发送sql语句:statement.executeUpdate(sql);返回的结果:int(1代表成功,0代表失败)编辑ppt使用SQL进行数据库操作查看: SQL语句:select * from 表名 where 范围如:select * from student where id=001;发送sql语句:statement.executeQuery(sql);返回的结果:resultSet (结果集) resultSet .next()查找下一个;result
7、Set. getString(id)取出一个对象的属性编辑ppt使用SQL进行数据库操作 总结: 增、删、改用来完成,返回整数(匹配的记录数),这类操作相对简单。 查询用来完成,返回的是ResultSet对象,ResultSet中包含了查询的结果;查询相对与增、删、改要复杂一些,因为有查询结果要处理。编辑ppt关闭相关连接 打开的资源使用完成后应该关闭resultSet.close();Statement.close();Connection.close();注意:资源关闭的顺序应该和打开的顺序相反打开的资源必须关闭,不然会造成对资源的浪费,并且再次连接时会无法连接编辑pptSQLSQL注入注
8、入,PreparedStatement,PreparedStatement和和StatementStatement 在SQL中包含特殊字符或SQL的关键字(如: or 1 or )时Statement将出现不可预料的结果(出现异常或查询的结果不正确),可用PreparedStatement来解决。 PreperedStatement(从Statement扩展而来)相对Statement的优点:1.没有SQL注入的问题。会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。3.数据库和驱动可以对PreperedStatement进行优化(只有在相关联的数据库连接没有关闭的情况下有效)。 编辑ppt
9、数据类型数据类型 详细信息见 几种特殊且比较常用的类型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); read
10、er = rs.getClob(i).getCharacterStream(); string = rs.getString(i);编辑ppt数据类型数据类型3.BLOB blob 存:ps.setBinaryStream(i, inputStream, length); 取:rs.getBinaryStream(i); rs.getBlob(i).getBinaryStream(); 编辑ppt一个简单用户相关的数据访问层一个简单用户相关的数据访问层 J2EE三层架构简介表示层 、业务逻辑层、数据访问层,三层之间用接口隔离。 定义domain对象User,定义存取用户的接口 用JDBC实现接
11、口 用配置文件(properties)和反射实现与具体类的耦合 编辑ppt事务事务( (ACID) ) 原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。 一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变)。 隔离性(isolcation):一个事务处理对另一个事务处理没有影响。 持续性(durability):事务处理的效果能够被永久保存下来 。 connection.setAutoCommit(false);/打开事务。 mit();/提交事务。 connection.rollback();/回滚事
12、务。编辑ppt隔离级别隔离级别多线程并发读取数据时的正确性 connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); V:可能出现,X:不会出现隔离级别隔离级别 脏读脏读 不可重复读不可重复读 幻读幻读 读未提交(Read uncommitted)VVV读已提交(Read committed)xVV可重复读(Repeatable read)xxV可串行化(Serializable )xxx编辑ppt存储过程 存储过程CallableStatement(从PreperedStatement扩展来)cs =
13、 connection.prepareCall(“call psname(?,?,?)”);cs.registerOutParameter(index, Types.INTEGER);cs.setXXX(i, xxxx);cs.executeUpdate();int id=cs.getInt(index);编辑ppt其他的几个其他的几个APIAPI Statement.getGeneratedKeys()PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);ps.exec
14、uteUpdate();ResultSet rs = st.getGeneratedKeys();rs.getInt(1); 批处理,可以大幅度提升大量增、删、改的速度。PreparedStatement.addBatch();PreparedStatement.executeBatch();编辑ppt其他的几个其他的几个APIAPI 可滚动的结果集Statement st = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);ResultSet rs = st.exe
15、cuteQuery(sql);rs.beforeFirst(); rs.afterLast();rs.first();rs.isFirst();rs.last();rs.isLast();rs.absolute(9);rs.moveToInsertRow();编辑pptDatabaseMetaData DatabaseMetaData meta = connection.getMetaData(); 通过DatabaseMetaData可以获得数据库相关的信息如:数据库版本、数据库名、数据库厂商信息、是否支持事务、是否支持某种事务隔离级别,是否支持滚动结果集等。编辑pptResultSetMe
16、taData ResultSetMetaData meta = rs.getMetaData(); 通过ResultSetMetaData可以获得结果有几列、各列名、各列别名、各列类型等。 可以将ResultSet放入Map(key:列名 value:列值)。 用反射ResultSetMetaData将查询结果读入对象中(简单的O/RMapping) 1)让SQL语句中列别名和要读入的对象属性名一样;2)通过ResultSetMetaData获得结果列数和列别名;3)通过反射将对象的所有setXxx方法找到;4)将3)找到的方法setXxx和2)找到的列别名进行匹配(即方法中的xxx于列别名相
17、等);5)由上一步找到的方法和列别名对应关系进行赋值Method.invoke(obj, rs.getObject(columnAliasName);编辑ppt数据源和连接池数据源和连接池 DataSource用来取代DriverManager来获取Connection; 通过DataSource获得Connection速度很快; 通过DataSource获得的Connection都是已经被包裹过的(不是驱动原来的连接),他的close方法已经被修改。 一般DataSource内部会用一个连接池来缓存Connection,这样可以大幅度提高数据库的访问速度; 连接池可以理解成一个能够存放Con
18、nection的Collection; 我们的程序只和DataSource打交道,不会直接访问连接池;编辑ppt一个简单的数据源一个简单的数据源实现 使用装饰模式的Connection(核心代码)class MyConnection implements Connectionprivate Connection realConn;private LinkedList connPool;MyConnection(Connection rConn, LinkedList cPool)this.realConn=rConn;this.connPool=cPool;public void close()this.connPool.addLast(this);/.编辑ppt一个简单的数据源一个简单的数据源实现 DataSource(核心代码)class MyDataSource implements DataSourceprivate LinkedList connPool = new Vector();public Connection getConneciton ()if(this.connPool.size()0)return this.connPool.removeFirst(0);return createCo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能制造业的技术前沿考试试卷及答案
- 健康与社会工作专业考试题及答案2025年
- 2025年信息经济学基本理论考试卷及答案
- 2025年文化创意产品开发与管理考试试题及答案
- 2025年师范生教育理论考试试卷及答案
- 2025年石油工程师考试试卷及答案
- 2025年民族文化研究考试试卷及答案
- 2025年农村教育与发展政策分析考试试题及答案
- 2025年技术经济与管理研究生入学考试试卷及答案
- 2025年口腔医学专业研究生入学考试题及答案
- 修脚师劳动合同(新标准版)6篇
- TCHSA-012-2023-儿童口腔疾病治疗中静脉镇静技术规范
- 三方合伙开店协议合同
- 2025年新疆中考第一次模拟化学试题(含答案)
- 2025年危险品水路运输从业资格考试复习题库-上(单选题)
- 2025年-河北建筑安全员B证考试题库附答案
- 《2024年版煤矿安全生产化标准化管理体系基本要求及评分方法》
- 2025-2030中国床垫行业市场深度调研及投资前与投资策略景研究报告
- 码头安全隐患
- 《FTA分析案例》课件 - 深入解析自由贸易协定对经济发展的影响
- 深圳医药产业政策研究-深度研究
评论
0/150
提交评论