撩课Java+系统架构点击开始学习

96.JDBC操作数据库的步骤 ?

、加载数据库驱动
、创建并获取数据库链接
、创建jdbc statement对象
、设置sql语句
、设置sql语句中的参数(使用preparedStatement)
、通过statement执行sql并获取结果
、对sql执行结果进行解析处理
、释放资源(resultSet、preparedstatement、connection)

97.JDBC中的Statement 和PreparedStatement的区别?

Java提供了
Statement、
PreparedStatement
CallableStatement
三种方式来执行查询语句,
其中 Statement 用于通用查询,
PreparedStatement 用于执行参数化查询,
而 CallableStatement则是用于存储过程。 关于PreparedStatement接口,
需要重点记住的是:
. PreparedStatement可以写参数化查询,
比Statement能获得更好的性能。 . 对于PreparedStatement来说,
数据库可以使用已经编译过
及定义好的执行计划,
这种预处理语句查询
比普通的查询运行速度更快。 . PreparedStatement可以阻止常见的
SQL注入式攻击。 . PreparedStatement可以写动态查询语句 . PreparedStatement与
java.sql.Connection对象是关联的,
一旦你关闭了connection,
PreparedStatement也没法使用了。 . “?” 叫做占位符。 . PreparedStatement查询
默认返回FORWARD_ONLY的ResultSet,
你只能往一个方向移动结果集的游标。
当然你还可以设定为其他类型的
值如:”CONCUR_READ_ONLY”。
. 不支持预编译SQL查询的JDBC驱动,
在调用connection.prepareStatement(sql)的时候,
它不会把SQL查询语句发送给数据库做预处理,
而是等到执行查询动作的时候
调用executeQuery()方法时
才把查询语句发送个数据库,
这种情况和使用Statement是一样的。 . 占位符的索引位置从1开始而不是0,
如果填入0会导致
java.sql.SQLException invalid column index异常。
所以如果PreparedStatement有两个占位符,
那么第一个参数的索引时1,
第二个参数的索引是2.

98.说说数据库连接池工作原理和实现方案?

一般来说,Java应用程序访问数据库的过程是:
.装载数据库驱动程序;
.通过jdbc建立数据库连接;
.访问数据库,执行sql语句;
.断开数据库连接。 程序开发过程中,存在很多问题: 首先,
每一次web请求都要建立一次数据库连接。
建立连接是一个费时的活动,
每次都得花费0.05s~1s的时间,
而且系统还要分配内存资源。
这个时间对于一次或几次数据库操作,
或许感觉不出系统有多大的开销。 可是对于现在的web应用,
尤其是大型电子商务网站,
同时有几百人甚至几千人在线是很正常的事。
在这种情况下,
频繁的进行数据库连接操作
势必占用很多的系统资源,
网站的响应速度必定下降,
严重的甚至会造成服务器的崩溃。
其次,对于每一次数据库连接,
使用完后都得断开。
否则,如果程序出现异常而未能关闭,
将会导致数据库系统中的内存泄漏,
最终将不得不重启数据库 “数据库连接”是一种稀缺的资源,
为了保障网站的正常使用,
应该对其进行妥善管理。
其实我们查询完数据库后,
如果不关闭连接,
而是暂时存放起来,
当别人使用时,
把这个连接给他们使用。
就避免了一次建立数据库
连接和断开的操作时间消耗。 数据库连接池的基本思想:
就是为数据库连接建立一个“缓冲池”。
预先在缓冲池中放入一定数量的连接,
当需要建立数据库连接时,
只需从“缓冲池”中取出一个,
使用完毕之后再放回去。
我们可以通过设定连接池最大连接数
来防止系统无尽的与数据库连接

99.execute,executeQuery,executeUpdate的区别是什么?

在jdbc中有3种执行sql的语句分别是
execute,
executeQuery
executeUpdate ResultSet executeQuery(String sql);
执行SQL查询,并返回ResultSet 对象。 方法executeQuery
用于产生单个结果集(ResultSet)的语句,
例如 SELECT 语句。
被使用最多的执行 SQL 语句的方法。
这个方法被用来执行 SELECT 语句,
它几乎是使用最多的 SQL 语句。
但也只能执行查询语句,
执行后返回代表查询结果的ResultSet对象。 .int executeUpdate(String sql);
可执行增,删,改,
返回执行受到影响的行数。 方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句
以及 SQL DDL(数据定义语言)语句,
例如 CREATE TABLE 和 DROP TABLE。
INSERT、UPDATE 或 DELETE 语句的效果
是修改表中零行或多行中的一列或多列。
executeUpdate 的返回值是一个整数(int),
指示受影响的行数(即更新计数)。
对于 CREATE TABLE 或 DROP TABLE 等
不操作行的语句,
executeUpdate 的返回值总为零。 .boolean execute(String sql);
可执行任何SQL语句,
返回一个布尔值,
表示是否返回ResultSet 。 可用于执行任何SQL语句,
返回一个boolean值,
表明执行该SQL语句是否返回了ResultSet。
如果执行后第一个结果是ResultSet,
则返回true,否则返回false。
但它执行SQL语句时比较麻烦,
通常我们没有必要使用execute方法
来执行SQL语句,
而是使用executeQuery或executeUpdate更适合,
但如果在不清楚SQL语句的类型时
则只能使用execute方法
来执行该SQL语句了。

100.Statement中的setFetchSize和setMaxRows方法有什么用处

setMaxRows可以用来限制返回的数据集的行数。
当然通过SQL语句也可以实现这个功能。
比如在MySQL中我们可以用
LIMIT条件来设置返回结果的最大行数。 setFetchSize理解起来就有点费劲了,
因为你得知道Statement
和ResultSet是怎么工作的。
当数据库在执行一条查询语句时,
查询到的数据是在数据库的缓存中维护的。
ResultSet其实引用的是数据库中缓存的结果。 假设我们有一条查询返回了100行数据,
我们把fetchSize设置成了10,
那么数据库驱动每次只会取10条数据,
也就是说得取10次。
当每条数据需要处理的时间比较长的时候
并且返回数据又非常多的时候,
这个可选的参数就变得非常有用了。 我们可以通过Statement来
设置fetchSize参数,
不过它会被ResultSet对象
设置进来的值所覆盖掉。

撩课-Java每天5道面试题第13天的更多相关文章

  1. 撩课-Java每天5道面试题第15天

    撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...

  2. 撩课-Java每天5道面试题第10天

    撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户 ...

  3. 撩课-Java每天5道面试题第9天

    撩课Java+系统架构 视频 点击开始学习 76.XML技术的作用? XML技术用于数据存储. 信息配置. 数据交换三方面. 可以将数据存储在XML中, 通过节点. 元素内容. 属性标示数据内容及关系 ...

  4. 撩课-Java每天5道面试题第8天

    撩课Java+系统架构 视频 点击开始学习 71.jsp有哪些内置对象?作用分别是什么? Page, pageContext, request, response, session, applicat ...

  5. 撩课-Java每天10道面试题第7天

    撩课Java+系统架构 视频 点击开始学习 61.什么是并发修改异常? 什么是并发修改异常: 当我们在遍历实现了collection接口 与iterator接口的集合时(List.Set.Map), ...

  6. 撩课-Java每天10道面试题第4天

    撩课Java+系统架构 视频 点击开始学习 31.静态变量和实例变量的区别? 静态变量也叫类变量, 这种变量前加了static修饰符. 可以直接用类名调用, 也可以用对象调用, 而且所有对象的同一个类 ...

  7. 撩课-Java每天5道面试题第17天

    116.说下Struts的设计模式 MVC模式: web应用程序启动时 就会加载并初始化ActionServler. 用户提交表单时, 一个配置好的ActionForm对象被创建, 并被填入表单相应的 ...

  8. 撩课-Java每天5道面试题第24天

    151.springMVC和struts2的区别有哪些? .springmvc的入口是一个servlet即前端控制器(DispatchServlet), 而struts2入口是一个filter过虑器( ...

  9. 撩课-Java每天5道面试题第23天

    146.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于MVC架构的 用来简化web应用程序开发的应用开发框架, 它是Spring的一个模块, 无 ...

随机推荐

  1. jQuery文档处理(追加删除)——(三)

    1.追加内容

  2. linux挂载光盘

    1.找到光盘的位置 ls -l /dev |grep cdrom mount /dev/sr0  /mnt [root@node2 /]# ls -l /dev |grep cdrom lrwxrwx ...

  3. 洛谷 P3835: 【模板】可持久化平衡树

    题目传送门:洛谷P3835. 题意简述: 题面说的很清楚了. 题解: 考虑建立一棵每个节点都表示一个版本的树. 以初始版本 \(0\) 为根.对于第 \(i\) 个操作,从 \(v_i\) 向 \(i ...

  4. HDU 6203 2017沈阳网络赛 LCA,DFS+树状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6203 题意:n+1 个点 n 条边的树(点标号 0 ~ n),有若干个点无法通行,导致 p 组 U V ...

  5. linux用户权限 -> ACL访问控制

    UGO设置基本权限: 只能一个用户,一个组和其他人 ACL设置基本权限: r.w.x 设定acl只能是root管理员用户. 相关命令: getfacl , setfacl facl权限 简介 facl ...

  6. ArcMap2SLD使用

    1.首先打开ArcMap,加载一副mxd地图: 2.打开ArcGIS2SLD,如下图所示: 3.选择样式文件的保存形式,一副mxd地图可能有多个图层,选中In Separate Dateien/In ...

  7. 【鬼脸原创】JQuery获取元素的方法总结

    目录 一.说明 二.获取本身 三.获取同级元素 四.获取父级元素 五.获取子级元素 一.说明   获取元素的方法分为两种:jQuery选择器.jQuery遍历函数. 做个总结,巩固下知识. 二.获取本 ...

  8. 两行代码搞定js对象深浅拷贝

    有一段时间没有更新博客了,忙于工作.2018年刚过去,今天来开启2018第一篇博文.好了,咱们步入正题. 先上代码 /** * 遍历对象 * 1.判断是不是原始值 * 2.判断是数组还是对象 * 3. ...

  9. matlab随笔

    主要是记录一些函数.(博客园的一些操作实在是太不方便了) cat函数:http://blog.sina.com.cn/s/blog_6b7dfd9d0100mnz7.html 联结两个数组 magic ...

  10. HDU 2819 Swap(行列式性质+最大匹配)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2819 题目大意:给你一个n*n的01矩阵,问是否可以通过任意交换整行或者整列使得正对角线上都是1. ...