2017.11.12 web中JDBC 方式访问数据库的技术
JavaWeb------ 第四章 JDBC数据库访问技术
在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一般使用两种方法,一种是通过JDBC驱动程序直接连接,一种是通过连接池。
(1)JDBC的体系结构
1.数据库驱动程序
实现了应用程序和某个数据库产品之间的接口,用于向数据库提交SQL请求。
2.驱动程序管理器(DriverManager)
为应用程序装载数据库驱动程序
3.JDBC API
提供了一系列抽象的接口,主要是用来连接数据库和直接调用SQL命令执行SQL语句。
(2)驱动程序接口Driver
~~每种数据库都提供了数据库驱动程序,并且提供了一个实现java.sql.Driver接口的类,简称Driver类。
~~在应用程序开发中,需要通过java langClass类的静态方法forName(String className)加载该Driver。在加载时,创建自己的实例并向java.sql.DriverManager类注册该实例。
(3)驱动程序管理器DriverManager
java.sql.DriverManager类负责管理JDBC驱动程序的基本服务,是JDBC的管理层,作用于用户和驱动程序之间,负责跟踪可用的驱动程序,并在在数据库和驱动程序之间建立连接。
DriverManager提供的常用方法是:
Connection getConnection(Sting url,String user,String password)
//该方法为静态方法,用来获得连接,有三个入口参数,依次为连接数据库的URL、用户名和密码
(4)数据库连接接口Connection
java.sql.Connetion接口负责与特定数据库的连接,在连接的上下文中可以执行SQL语句并返回结果。
Connection接口的常用方法
方法名称 | 功能描述 |
---|---|
createStatement() | 创建并返回一个Statement实例,通常在无参的SQL语句时创建该实例 |
prepareStatement() | 通常在执行包含参数的SQL语句时创建该实例,并对sql进行预编译处理 |
close() | 立即释放Connection实例占用的数据库和JDBC资源,即关闭数据库连接 |
(5)执行SQL语句接口Statement
javasqlStatement接口用来执行静态的SQL语句,并返回执行结果。
Statement接口的常用方法
方法说明 | 功能描述 |
---|---|
executeQuery(String sql) | 执行指定的静态SELECT语句并返回一个不能为null的额ReaultSet实例 |
executeUpdate() | 执行指定的Update、delete、insert,并返回一个int整型值为同步更新记录 |
close() | 立即释放Stateement势力战勇的数据库和JDBC资源,即关闭Statement实例 |
(6)执行动态SQL语句接口PreparedStatement
java sqlPreparedStatement接口继承于Statement接口,是Stateement接口的扩展,用来执行动态的SQL语句就是包含参数的SQL语句。通过PreparedStatement实例执行的动态SQL语句,将被编译保存到PraparedStatement实例中。从而可以反复高效的执行该sql语句。
ParadeStatement接口的常用方法
方法名称 | 功能描述 |
---|---|
executeQuery() | 执行前面包含参数的动态select语句,并返回一个永远不能为null的ResultSet实例 |
executeUpadate() | 执行前面包含参数的动态insert、update或delete语句,并返回一个int值,为同步更新记录 |
setXxx() | 为指定参数设置Xxx型值 |
close() | 立即释放Statement实例占用的数据库和JDBC资源即关闭Statement实例 |
(7)访问结果集接口ResultSet
~~该接口类似于一个数据表,通过该接口的实例可以获得检索结果集,以及对应的数据表相关信息。ResultSet实例是通过执行查询数据库的语句生成。
~~ResultSet实例具有指向当前数据行的指针。最初,指针指向第一行记录的前方,通过next()方法可以将指针移动到下一行。
方法名称 | 功能描述 |
---|---|
first() | 移动指针到第一行;如果结果集为空则返回false如果结果集合返回TYPE_FORWARD_ONLY将抛出异常 |
last() | 移动指针到最后一行。。。。。 |
pervious() | 移动指针打到上一行 |
next() | 移动指针到下一行 |
getRow() | 查看当前行的索引编号;索引编号从1开始,第一次使用该方法将移动到第一行 |
findColumn() | 查看指定列明的索引编号 |
close() | 释放ResultSet实例占用的数据库和JDBC资源 |
(8)JDBC访问数据库
使用JDBC访问数据首先需要加载数据库的驱动程序,然后利用连接符号串实现连接,创建连接对象,在创建执行SQL的执行语句并实现数据库的操作。JDBC访问数据库的流程:
1.注册驱动
2.建立连接
3.创建数据库操作对象
4.执行语句
5.处理执行结果
6.释放资源
(9)注册驱动MySQL的驱动程序
步骤:1.先添加下载数据库链接驱动-----复制到WEB-INF\lib目录下,连接成功;
2.加载注册注定的数据库驱动程序
加载格式:【对于MySQL数据库】 Class.forName("driverName"); //driverName=com.mysql.jdbc.Driver
【对于Oracle数据库】 Class.forName("driverName"); //driverName=oracle.jdbc.OracleDriver
(10)JDBC连接数据库创建连接对象
创建数据库连接对象需要首先形成“连接符号字(URL)”,然后利用连接符号字实现连接并创建连接对象。
1.数据库连接的URL
~~首先要创建指定数据库的URL,一个数据库连接字包括:数据库服务器的ip 地址及其访问服务器的端口号、数据库名称、访问数据库的用户名称及其访问密码。有时需要制定编码格式。
~~创建格式:
String url1="jdbc:mysql:http:localhost:3306/"
String url2="?user=root&password=密码";
String url3="&userUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
2.利用连接符号实现连接获取连接对象
·~ ~DriverManager类提供了getConnection方法,用来建立与数据库的连接。调用getConnection()方法可返回一个数据库连接对象。
~~ getConnection方法有以下三种重载方式:
1.通过url指定的数据库建立连接
基本格式:
static Connection getConnection(String url)
2.通过url指定的数据库建立连接,info指定一些属性,这些属性里包括了user和password属性
基本格式:
static Connection getConnection(String url,Propertyinfo);
3.传入参数用户名为user,密码为passwrd,通过url指定的数据库建连接
基本格式:
static Connection getConnection(String url,String user,String password)
~~采用带数据库的编码格式:
String url1="jdbc:mysql:http://localhost:3306/"+dbName;
String url2="?user="+userName+"password"+userPassword;
String url3="&userUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
Connection conn=DriverManager。getConnection(url );
3.利用JDBC连接MySQL数据库,获取连接对象的通用格式
~~完整的连接格式:
String driverName="com.mysql.jdbc.Driver";//加载驱动程序名
String userName="root"; //数据库用户名
String userPwd="123456"; //密码
String dbName="students"; //数据库名字
String url1="jdbc:mysql://localhost:3306/"+dbName;
String url2="?user="+userName+"&password="+userPwd;
String url3="&userUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;//形成带数据库读写编码的数据库连接字
Class.forName(driverName);//加载并注册驱动程序
Connection conn=DriverManager.getConnection(url);//获取数据库连接对象
4.创建数据库的操作对象
在JavaWeb应用程序中,需要由数据库连接对象创建数据库的操作对象,然后执行SQL语句。
数据库的操作对象是指能执行SQL语句的对象,需要用Connection类中创建数据库的操作对象的方法实现创建。可创建两种不同的数据库操作对象:Statement对象、PrepareStatement对象,两种对象的创建和执行SQL语句是不同的。
1.创建Statement对象
利用Connection类的方法createStatement()可以创建一个Statement类实例,用来执行SQL操作
例如:通过数据库连接,得到连接对象conn,那么可以创建一个Statement对象的实例stmt:
Statement stmt=conn。createStatement();//它是无参方法
2.创建PrepareStatement对象,他是SQL预处理类接口
利用Connection类的方法prepareStatement(String sql)可以创建一个PreparedStatement类的实例。
~~ PreparedStatement对象使用PreparedStatement()方法创建,并且在创建时直接指定SQL语句
例如:String sql="....."; //SQL语句形成的字符串
PreparementStatement pstmt=conn.preparedStatement("sql"); //conn为连接对象
~~使用带参数的SQL语句(“?”表示参数值),创建PrepardStatement对象。
假设已得到连接对象conn,需要创建一个查询年龄和性别的一个操作对象。
例如:String ss="select *from stu_info where age>=? and sex=?";
PreparedStatement pstmt=conn.preparedStatement(ss);
设置参数的格式:PreparedStatement 对象.setXXX(position,value);
//position 代表参数的位置号,第一个出现的其位置为1,依次增加
//value 代表要传给参数的值
//setXXX()中的Xxx代表不同的数据类型,常见的set方法有:
void setInt(int parameterIndex,int x);
void setFloat(int parameterIndex,float x);
void setString(int parameterIndex,String x);
void setDate(int parameterIndex,Date x);
pstmt.set(1,20); pstmt.set(2,"男");
JavaWeb—— 第四章 JDBC数据库访问技术
在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一般使用两种方法,一种是通过JDBC驱动程序直接连接,一种是通过连接池。
(1)JDBC的体系结构
1.数据库驱动程序
实现了应用程序和某个数据库产品之间的接口,用于向数据库提交SQL请求。
2.驱动程序管理器(DriverManager)
为应用程序装载数据库驱动程序
3.JDBC API
提供了一系列抽象的接口,主要是用来连接数据库和直接调用SQL命令执行SQL语句。
(2)驱动程序接口Driver
~~每种数据库都提供了数据库驱动程序,并且提供了一个实现java.sql.Driver接口的类,简称Driver类。
~~在应用程序开发中,需要通过java langClass类的静态方法forName(String className)加载该Driver。在加载时,创建自己的实例并向java.sql.DriverManager类注册该实例。
(3)驱动程序管理器DriverManager
java.sql.DriverManager类负责管理JDBC驱动程序的基本服务,是JDBC的管理层,作用于用户和驱动程序之间,负责跟踪可用的驱动程序,并在在数据库和驱动程序之间建立连接。
DriverManager提供的常用方法是:
Connection getConnection(Sting url,String user,String password)
//该方法为静态方法,用来获得连接,有三个入口参数,依次为连接数据库的URL、用户名和密码
(4)数据库连接接口Connection
java.sql.Connetion接口负责与特定数据库的连接,在连接的上下文中可以执行SQL语句并返回结果。
Connection接口的常用方法
方法名称 功能描述
createStatement() 创建并返回一个Statement实例,通常在无参的SQL语句时创建该实例
prepareStatement() 通常在执行包含参数的SQL语句时创建该实例,并对sql进行预编译处理
close() 立即释放Connection实例占用的数据库和JDBC资源,即关闭数据库连接
(5)执行SQL语句接口Statement
javasqlStatement接口用来执行静态的SQL语句,并返回执行结果。
Statement接口的常用方法
方法说明 功能描述
executeQuery(String sql) 执行指定的静态SELECT语句并返回一个不能为null的额ReaultSet实例
executeUpdate() 执行指定的Update、delete、insert,并返回一个int整型值为同步更新记录
close() 立即释放Stateement势力战勇的数据库和JDBC资源,即关闭Statement实例
(6)执行动态SQL语句接口PreparedStatement
java sqlPreparedStatement接口继承于Statement接口,是Stateement接口的扩展,用来执行动态的SQL语句就是包含参数的SQL语句。通过PreparedStatement实例执行的动态SQL语句,将被编译保存到PraparedStatement实例中。从而可以反复高效的执行该sql语句。
ParadeStatement接口的常用方法
方法名称 功能描述
executeQuery() 执行前面包含参数的动态select语句,并返回一个永远不能为null的ResultSet实例
executeUpadate() 执行前面包含参数的动态insert、update或delete语句,并返回一个int值,为同步更新记录
setXxx() 为指定参数设置Xxx型值
close() 立即释放Statement实例占用的数据库和JDBC资源即关闭Statement实例
(7)访问结果集接口ResultSet
~~该接口类似于一个数据表,通过该接口的实例可以获得检索结果集,以及对应的数据表相关信息。ResultSet实例是通过执行查询数据库的语句生成。
~~ResultSet实例具有指向当前数据行的指针。最初,指针指向第一行记录的前方,通过next()方法可以将指针移动到下一行。
方法名称 功能描述
first() 移动指针到第一行;如果结果集为空则返回false如果结果集合返回TYPE_FORWARD_ONLY将抛出异常
last() 移动指针到最后一行。。。。。
pervious() 移动指针打到上一行
next() 移动指针到下一行
getRow() 查看当前行的索引编号;索引编号从1开始,第一次使用该方法将移动到第一行
findColumn() 查看指定列明的索引编号
close() 释放ResultSet实例占用的数据库和JDBC资源
(8)JDBC访问数据库
使用JDBC访问数据首先需要加载数据库的驱动程序,然后利用连接符号串实现连接,创建连接对象,在创建执行SQL的执行语句并实现数据库的操作。JDBC访问数据库的流程:
1.注册驱动
2.建立连接
3.创建数据库操作对象
4.执行语句
5.处理执行结果
6.释放资源
(9)注册驱动MySQL的驱动程序
步骤:1.先添加下载数据库链接驱动—–复制到WEB-INF\lib目录下,连接成功;
2.加载注册注定的数据库驱动程序
加载格式:【对于MySQL数据库】 Class.forName(“driverName”); //driverName=com.mysql.jdbc.Driver
【对于Oracle数据库】 Class.forName(“driverName”); //driverName=oracle.jdbc.OracleDriver
(10)JDBC连接数据库创建连接对象
创建数据库连接对象需要首先形成“连接符号字(URL)”,然后利用连接符号字实现连接并创建连接对象。
1.数据库连接的URL
~~首先要创建指定数据库的URL,一个数据库连接字包括:数据库服务器的ip 地址及其访问服务器的端口号、数据库名称、访问数据库的用户名称及其访问密码。有时需要制定编码格式。
~~创建格式:
String url1="jdbc:mysql:http:localhost:3306/"
String url2="?user=root&password=密码";
String url3="&userUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
2.利用连接符号实现连接获取连接对象
·~ ~DriverManager类提供了getConnection方法,用来建立与数据库的连接。调用getConnection()方法可返回一个数据库连接对象。
~~ getConnection方法有以下三种重载方式:
1.通过url指定的数据库建立连接
基本格式:
static Connection getConnection(String url)
2.通过url指定的数据库建立连接,info指定一些属性,这些属性里包括了user和password属性
基本格式:
static Connection getConnection(String url,Propertyinfo);
3.传入参数用户名为user,密码为passwrd,通过url指定的数据库建连接
基本格式:
static Connection getConnection(String url,String user,String password)
~~采用带数据库的编码格式:
String url1="jdbc:mysql:http://localhost:3306/"+dbName;
String url2="?user="+userName+"password"+userPassword;
String url3="&userUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
Connection conn=DriverManager。getConnection(url );
3.利用JDBC连接MySQL数据库,获取连接对象的通用格式
~~完整的连接格式:
String driverName="com.mysql.jdbc.Driver";//加载驱动程序名
String userName="root"; //数据库用户名
String userPwd="123456"; //密码
String dbName="students"; //数据库名字
String url1="jdbc:mysql://localhost:3306/"+dbName;
String url2="?user="+userName+"&password="+userPwd;
String url3="&userUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;//形成带数据库读写编码的数据库连接字
Class.forName(driverName);//加载并注册驱动程序
Connection conn=DriverManager.getConnection(url);//获取数据库连接对象
4.创建数据库的操作对象
在JavaWeb应用程序中,需要由数据库连接对象创建数据库的操作对象,然后执行SQL语句。
数据库的操作对象是指能执行SQL语句的对象,需要用Connection类中创建数据库的操作对象的方法实现创建。可创建两种不同的数据库操作对象:Statement对象、PrepareStatement对象,两种对象的创建和执行SQL语句是不同的。
1.创建Statement对象
利用Connection类的方法createStatement()可以创建一个Statement类实例,用来执行SQL操作
例如:通过数据库连接,得到连接对象conn,那么可以创建一个Statement对象的实例stmt:
Statement stmt=conn。createStatement();//它是无参方法
2.创建PrepareStatement对象,他是SQL预处理类接口
利用Connection类的方法prepareStatement(String sql)可以创建一个PreparedStatement类的实例。
~~ PreparedStatement对象使用PreparedStatement()方法创建,并且在创建时直接指定SQL语句
例如:String sql="....."; //SQL语句形成的字符串
PreparementStatement pstmt=conn.preparedStatement("sql"); //conn为连接对象
~~使用带参数的SQL语句(“?”表示参数值),创建PrepardStatement对象。
假设已得到连接对象conn,需要创建一个查询年龄和性别的一个操作对象。
例如:String ss="select *from stu_info where age>=? and sex=?";
PreparedStatement pstmt=conn.preparedStatement(ss);
设置参数的格式:PreparedStatement 对象.setXXX(position,value);
//position 代表参数的位置号,第一个出现的其位置为1,依次增加
//value 代表要传给参数的值
//setXXX()中的Xxx代表不同的数据类型,常见的set方法有:
void setInt(int parameterIndex,int x);
void setFloat(int parameterIndex,float x);
void setString(int parameterIndex,String x);
void setDate(int parameterIndex,Date x);
pstmt.set(1,20); pstmt.set(2,"男");
5104
绑定 Evernote International 账号
绑定印象笔记账号
当前文档
恢复至上次同步状态
删除文档
导出...
预览文档
分享链接
系统
设置
使用说明
快捷帮助
常见问题
关于
搜索文件
JavaWeb—— 第四章 JDBC数据库访问技术
欢迎使用马克飞象
JavaWeb——Servlet过滤器
JavaWeb 第三章—–JSP技术
数据结构—第一章 概述
JavaWeb—–第二章 静态网页开发技术
面向对象分析与设计(UML)—–第一章 面向对象的概述
JavaWeb—–第七章 JavaWeb常用开发模式与案例
微型计算机原理与接口技术—– 第三章 寻址方式与指令系统
微型计算机原理与接口技术—–第四章 汇编语言语法和DOS功能调用
JavaWeb—-第五章 JavaBean技术
JavaWeb ——第六章 Servlet技术
第七章 微型计算机原理与接口技术—–中断系统与8237A DMA控制器
微型计算机原理与及接口技术—–第六章 存储器
第一章 微型计算机原理与接口技术—-微型计算机的基础
第八章 善于利用指针
软件测试
第七章 用函数实现模块化程序设计
针对Java Web应用中错误异常处理方法的运用
第六章 利用数组处理批量数据
第五章循环结构程序设计
第四章 选择结构程序设计
第三章 最简单的C程序结构—–顺序结构设计
程序基本算法之查找与排序
第二章 算法—程序的灵魂
第一章 程序设计和C语言
微型计算机原理与接口技术—–第五章 汇编语言程序设计
2017.10.21笔记
2017.11.12 web中JDBC 方式访问数据库的技术的更多相关文章
- 2017.11.10 web中URL和URI的区别
URI:Uniform Resource Identifier,统一资源标识符: •URL:Uniform Resource Locator,统一资源定位符: •URN:Uniform Resourc ...
- 对比传统方式访问数据库和SpringData访问数据库
我们在写代码的时候应该一边写一边测试,这样的话可以尽快的找到错误,在代码写多了之后去找错误的话不容易给错误定位 传统方式访问数据库 1:创建一个Maven web项目 2:修改pom.xml为以下内容 ...
- JDBC API访问数据库的基本步骤。
JDBC本质:官方定义了一套操作所有关系型数据库的规则(接口),各个数据库厂商实现这个接口,提供数据库驱动jar包. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类. 任 ...
- 使用原生JDBC方式对数据库进行操作
使用原生JDBC方式对数据库进行操作,包括六个步骤: 1.加载JDBC驱动程序 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM.可以通过java.lang.Class类的静态方法forNa ...
- 理解class.forName() ---使用jdbc方式链接数据库时会经常看到这句代码
目录(?)[-] 官方文档 类装载 两种装载方法的区别 不同的类装载器 是否实例化类 在jdbc链接数据库中的应用 资源 原文地址:http://yanwushu.sinaapp.com/clas ...
- ADO.NET 连接方式和非链接方式访问数据库
一.//连接方式访问数据库的主要步骤(利用DataReader对象实现数据库连接模式) 1.创建连接对象(连接字符串) SqlConnection con = new SqlConnection(Co ...
- php 面向对象的方式访问数据库
<body> <?php //面向对象的方式访问数据库 //造对象 $db = new MySQLi("localhost","root",& ...
- 2.EF中 Code-First 方式的数据库迁移
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/code-first-migrations-with-entity-framework/ 系列目 ...
- 非链接方式访问数据库--查询的数据集用Dataset来存储。
private void Button_Click_1(object sender, RoutedEventArgs e) { //非链接方式访问数据库, //1创建连接对象(连接字符串) using ...
随机推荐
- caffe 图片数据的转换成lmdb和数据集均值(转)
转自网站: http://blog.csdn.net/muyiyushan/article/details/70578077 1.准备数据 使用dog/cat数据集,在训练项目根目录下分别建立trai ...
- xml和json互转
开发过程中有些时候需要把xml和json互转,如某钱X接口入参和出参都是xml格式的,十分蛋疼.特写下面工具类,以留用. 需要引用jar: <!-- https://mvnrepository. ...
- 大型分布式java应用与SOA
1.基于消息方式.远程调用方式的架构带来的问题: 1.1 系统多元化的问题 [解决]: 对共用逻辑部分进行抽象: 1.2 系统访问量.数据量上涨后带来的问题 [解决]: 拆分系统: 1.3 在构建共用 ...
- android Activity启动过程(二)从ActivityManagerService的startActivity到栈顶Activity的onPause过程
ActivityManagerService.startActivity() ActvityiManagerService.startActivityAsUser() ActivityStackSup ...
- python-综合练习题(if条件语句,while循环,奇数偶数
练习题: 1.使用while循环输入1 2 3 4 5 6 8 9 10 2.求1-100的所有数的和 3.输出1-100内所有的奇数 4.输出1-100内所有的偶数 5.求1-2+3-4+ ...
- React.js 小书 Lesson5 - React.js 基本环境安装
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson5 转载请注明出处,保留原文链接和作者信息. 安装 React.js React.js 单独使 ...
- hdu 1561 树形DP n个选m个价值最大
http://acm.hust.edu.cn/vjudge/problem/18068 #include <iostream> #include <string> #inclu ...
- elasticsearch排序-----5
我们之前查询出的结果都会有一个_score分值表示列出结果与搜索结果的相关性,该值越高排序位置越靠前,es具体是如何计算该值的,我们认真来看看. 1.根据字段值排序 比如我们要查询/index5下su ...
- cf868F. Yet Another Minimization Problem(决策单调性 分治dp)
题意 题目链接 给定一个长度为\(n\)的序列.你需要将它分为\(m\)段,每一段的代价为这一段内相同的数的对数,最小化代价总和. \(n<=10^5,m<=20\) Sol 看完题解之后 ...
- React 复合组件
var Avatar = React.createClass({ render: function() { return ( <div> <ProfilePic username={ ...