JSP--JDBC技术
JDBC技术
1、JDBC简介
大型网站是离不开数据库的,使用JDBC技术链接数据库
JDBC:java Data Base Connectivity,使用JDBC连接数据库后数据库的增/删/改/查及批处理等操作
JDBC是java程序与数据库系统通信的标准API,定义在JDK的API中,JDBC在java程序和数据库系统之间建立了桥梁
java程序<------->JDBC API<--------->数据库驱动<--------->数据库系统
2、JDBC连接数据库的流程
1)注册数据库驱动
连接数据库需要将数据库厂商提供的数据库驱动类注册到JDBC的驱动管理器中,通常是将数据库驱动类加载到JVM虚拟机。
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动,注册到驱动管理器
2)构建数据库连接URL
这个URL一般由数据库厂商制定,不同的数据库的URL不同,但基本的格式都是;JDBC协议+IP地址或域名+端口+数据库名称。
MySQL数据库的URL的字符串为:"jdbc:mysql://localhost:3306/db_admin"; //db_admin是本地创建的一个数据库名称
3)获取Connection对象
在前两步完成后,即可通过驱动管理器获取数据库的Connection对象,该对象是JDBC封装的数据库连接对象,创建此对象后才可以对数据库执行相关操作
DriverManager.getConnection(url,userName,password);
获取Connection对象需要DriverManager对象,该对象的getConnection()方法提供数据库连接URL,数据库用户名和密码创建Connection对象
提示:JDK中不包含数据库的驱动程序,使用JDBC操作数据库需要事先下载数据库厂商提供的驱动包,由于使用的是mysql数据库,故添加的是MySQL官方提供的数据库驱动包
为:mysql-connector-java-5.1.20-bin.jar //数据库驱动包
JDBC -------> jar包(驱动包) ---------> 操作数据库
try{
Class.forName("com.mysql.jdbc.Driver");
String URL = "jdbc:mysql://localhost:3306/db_admin";
String userName = "root";
String password = "123";
Connection connection = DriverManager.getConnection(URL,userName,password);
if(connection!=null){
System.out.println("数据库连接成功");
}else{
System.out.println("数据库连接失败");
}
}catch(exception ee){
System.out.println(ee);
}
3、JDBC的核心API
JDBC核心API主要包括5个接口:
数据库连接接口Connection
驱动程序管理类 DriverManager
执行SQL语句的Statement接口 :执行静态SQL语句
预编译SQL语句的PreparedStatement接口:执行动态SQL语句
结果集ResultSet接口
DriverManager.getConnection()-----------> Connection -------> Connection.createStatement()----> Statement对象
1)DriverManager类
负责管理JDBC驱动程序的基本服务,是JDBC的管理层,作用于用户和驱动程序之间,负责跟踪可用的驱动程序,并在数据库和驱动程序之间建立连接。
该类也处理诸如驱动程序登录时间限制,以及显示登录和跟踪消息等,成功加载Driver类并在DriverManager类中注册后,DriverManager类即可建立数据库连接
当调用DriverManager类的getCoonnection()方法请求建立数据库连接时,该类将试图定位一个适当的Driver类,并检查定位到的Driver类是否可以建立连接,如果可以
则建立连接并返回。否则抛出SQLException异常。
该类主要方法:
getConnection(String url,String user,String password)
根据指定数据库连接的url和用户名、密码建立数据库连接
getDrivers()
获取当前DriverManager中已加载的所有驱动程序,返回值为:Enumeration类型
deregisterDriver(Driver driver)
从DriverManager的管理列表删除一个驱动程序。
registerDriver(Driver driver)
向DriverManager注册一个驱动对象,参数driver为要注册的驱动
2)代表数据库连接的Connection接口
Connection接口用于创建数据库的链接会话,只有获得该连接对象后才能访问数据库,并操作数据库
方法:
close() 关闭连接,释放系统资源
createStatement() 创建一个Statement对象
isClosed() 检索此Connection对象是否已经被关闭
preparedStatement(String sql) 创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库
3)执行SQL语句的Statement接口
Statement接口用于执行静态的SQL语句,并返回一个生成结果的对象。利用该接口对象把静态的SQL语句发送到数据库编译执行,然后返回数据库的处理结果
方法:
close() 释放此Statement对象的数据库和JDBC资源
execute(String sql) 执行给定的SQL语句,该语句可能返回多个结果
addBatch(String sql) 向Batch中添加待执行的SQL语句
executeBatch() 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组
executeQuery(String sql) 执行给定的SQL语句,该语句返回单个ResultSet对象
executeUpdate(String sql) 执行给定的SQL语句,该语句可能为insert update delete
4)预编译SQL语句的PreparedStatement接口
使用占位符"?"代替参数,通过setXX()为SQL语句的参数赋值
execute()
executeQuery()
executeUpdate()
setBoolean(int parameterIndex,boolean x) 将指定参数设置为给定的java Boolean值
setByte(int parameterIndex,byte x)
setDate(int parameterIndex,Date x)
setInt(int parameterIndex,int x) //为SQL语句的第parameterIndex个参数赋值为x
setString(int parameterIndex,String x)
5)结果集ResultSet接口
ResultSet接口保存JDBC执行查询时返回的结果。该结果集与数据库字段相对应。由行和列组成,并且在ResultSet结果集的行上提供指针,最初指针指向结果集的第一行之前
调用next()方法可将指针移动到下一行,如果下一行没有数据,则返回false,一般对结果遍历通过while()循环
方法:
afterLast() 将指针移到此ResultSet对象的末尾,位于最后一行之后
beforeFirst() 将指针移到此ResultSet对象的开头,位于第一行之前
close() 立即释放此ResultSet对象的数据库和JDBC资源
first() 将指针移到此ResultSet对象的第一行
getFloat(int columnIndex) 用float的形式检索ResultSet对象的当前行中指定列的值
getInt(int columnIndex) 用Int的形式检索ResultSet对象的当前行中指定列的值
getString(int columnIndex) 用String的形式检索ResultSet对象的当前行中指定列的值
next() 将指针从当前位置下移一行,常用while循环的迭代条件
absolute(int row) 将指针移到此 ResultSet对象的给定行编号
提示:里面的索引都是从1开始,不同于数组
在执行deleteRow()方法时并不将操作同步到数据库,而是在关闭ResultSet结果集时同步到数据库
建议每次操作数据库结束后,依次关闭ResultSet Statement Connection
虽然直接关闭Statement实例也会关闭相关的ResultSet实例,并且JVM虚拟机的垃圾回收机制会定时清理缓存并关闭长时间不用的数据库连接,但是如果关闭不及时
数据库连接达到一定数量,将严重影响数据库和计算机的运行速度,甚至瘫痪
6)JSP连接数据库操作
A:安装好Mysql数据库,下载驱动包:mysql-connector-java-5.1.20-bin.jar,根据数据库的版本下载对应的驱动包
B:把mysql-connector-java-5.1.20-bin.jar放到tomcat服务器的lib文件夹下
C:使用jsp程序访问数据库时一定要导入的包:java.sql.*
D:使用服务器自带的jar包以及JREjar包
JSP--JDBC技术的更多相关文章
- 利用JSP编程技术实现一个简单的购物车程序
实验二 JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...
- .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载
223本电子书籍,囊括了.NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Shell/A ...
- jsp2.0+中的标签文件,JSP Fragment技术
刚进新公司不久,今天在看到项目中用到了.tag文件.刚开始我还以为这个是第三方类似freemarker的模板技术.问了下项目组的其他人员,原来这是jsp2.0以来就有的JSP Fragment技术.以 ...
- 使用JDBC技术连接数据库(附源码)--JAVA的简单应用
一.创建数据库(以mysql数据库为例) mysql数据库的下载安装与配置 -可参考博主之前的随笔:Windows平台下搭建MySQL数据库 创建wxb数据库-create database wxb; ...
- JAVA数据库编程(JDBC技术)-入门笔记
本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学 ...
- 初涉JSP+JDBC 基于SQL2008的登陆验证程序
简单的以代码的形式纪念一下,因为现在还没有解决SQL2008驱动的问题,并且有好多东西要学,所以日后会有更新~ 所安装的软件有:SQL2008,eclipse,tomcat,JDK,涉及环境配置.等等 ...
- SpringBoot配置使用jsp页面技术
SpringBoot配置使用jsp页面技术 1.pom配置 package配置必须为war类型 添加依赖 <packaging>war</packaging> <depe ...
- 综合学生信息管理系统(JSP+JDBC)
原创 通过JSP+JDBC制作一个简单的操作数据库中表信息的系统. 总体界面如下,一共有5个功能块. 功能一:列出全部学生 功能二:按条件查询学生 功能三:新添加学生 功能四:按条件删除学生 功能五: ...
- JDBC技术总结(一)
1. JDBC简介 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC,JDBC不能直接操作数据库,JDBC通过接口加载数据库的驱动,然后操作数据库.JDBC: ...
- Javaweb学习笔记7—JDBC技术
今天来讲javaweb的第7阶段学习. JDBC技术,关于JDBC本篇博客只介绍了它的一部分,后面博客会更加深入探讨. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的 ...
随机推荐
- bzoj1605 / P2905 [USACO08OPEN]农场危机Crisis on the Farm
P2905 [USACO08OPEN]农场危机Crisis on the Farm 发现总步数$k<=30$,考虑用$k$瞎搞 设$f[u][i][j]$表示已经吹$u$次哨,全体奶牛向右走$i ...
- Cooperation.GTST团队第二周项目总结
项目进展 这周我们把工作主要放在了UI界面的实现上,为了让整款APP看上去能够更加高大上,我们决定采用Android 5.0开始推出的一个Material Design风格的导航控件Toolbar. ...
- HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...
- POJ - 1463 Strategic game (树状动态规划)
这题做的心塞... 整个思路非常清晰,d[i][0]表示第i个结点不设置监察的情况下至少需要的数量:d[i][1]表示第i个结点设置检查的情况下的最小需要的数量. 状态转移方程见代码. 但是万万没想到 ...
- [bug report] 当springboot报错 找不到类 javax.xml.bind.JAXBException
<!--以下四个依赖均是javax.xml.bind.JAXBException的依赖 在java6/7/8默认支持,java9不再支持--> <dependency> < ...
- Coursera SDN M1.2.1 SDN History: Programmable Networks 2
NOTE Capsules Example 1.Type Field: excute forwarding routine => carry program 2.Previous address ...
- Solidity 官方文档中文版 3_安装Solidity
基于浏览器的Solidity 如果你只是想尝试一个使用Solidity的小合约,你不需要安装任何东西,只要访问 基于浏览器的Solidity http://remix.ethereum.org/. 如 ...
- python 数字的四舍五入的问题
由于 python3 包括python2.7 以后的round策略使用的是decimal.ROUND_HALF_EVEN 即Round to nearest with ties going to ne ...
- Web开发中的显示与隐藏
大多数编程语言,在平开发过程中,都是会遇到一些特殊的场景,需要实现显示或者隐藏来达到我们想要的效果:然而实现的方式有多种,今天就写一下,希望可以帮到各位. 小编我学习前端1年了,特意写写博客来回顾一下 ...
- UVA-10570 Meeting with Aliens (枚举+贪心)
题目大意:将一个1~n的环形排列变成升序的,最少需要几次操作?每次操作可以交换任意两个数字. 题目分析:枚举出1的位置.贪心策略:每次操作都保证至少一个数字交换到正确位置上. # include< ...