我的学习之路_第二十章_JDBC
JDBC
使用JDBC技术,通过mysql提供的驱动程序,操作数据库
● 1. 注册驱动
告知jvm 使用的是什么驱动程序(mysql,oracle)
使用API中的类 DriverManager中的静态方法
没有返回值 registerDriver (Driver dirver) 向DriverManager注册给定驱动程序.
方法的参数是一个标准的接口Driver
接口是实现类有mysql确定提供 : com.jdbc.Driver 是接口的实现类
在源码中已经注册过了,我们只要通过反射技术获取一次class文件对象,类中静态代码就会执行
Class.forName("com.jdbc.Driver");
● 2. 获取数据库的连接
数据库是TCP程序服务器,连接服务器(通过三次握手)
使用API中的类DriverManager中的静态方法
返回值:Connection getConnection(String url,String user,String password)
试图建立给定数据库的URL连接
方法参数: String url :数据库的地址 : jdbc:mysql://ip地址:端口号/数据库名称
String user:数据库的用户名
String password:数据库的密码
方法的返回值 : 返回的是mysql驱动提供的Connection接口的实现类对象,不需要关注实现类,可以使用Connection接口接收
● 3. 获取执行者对象
执行SQL语句的对象,作用就是执行SQL
可以使用Connection的方法获取
返回值 : Statement createStatement() 创建一个Statement对象来将SQL语句发送到数据库
方法的返回值: 返回的mysql驱动提供的Statement接口的实现类对象,我们不要关注实现类,可以使用Statement接口接收
● 4. 执行SQL语句获取结果集
使用执行者对象执行SQL语句
获取SQL语句的结果集(增删改:整数,执行有效行数 查询:返回的就是一个结果集)
使用Statement中的方法
◆返回值: int executeUpdate(String sql) 执行给定的SQL语句,该语句可能为插入(insert),修改(update)或者删除(delete)语句
返回值int : 执行的有效行数
◆返回值: ResultSet executeQuery(String sql) 执行给定的SQL语句,该语句返回翻个ResultSet对象
返回值ResultSet标准接口的实现类对象,实现类对象由mysql驱动提供,可以使用ResultSet接口接收
● 5. 处理结果集
如果是执行的查询语句就会返回一个结果集,需要处理
ResultSet中有一个方法 返回值:boolean next() 将光标从当前位置向前移一行
如果新的当前行有效,则返回true,如果不存在下一行,则返回false
如果有结果集返回true,如果没有结果集返回false
相当于迭代器中的hasNext方法
next返回true有结果集 使用 ResultSet中的方法 getxxx(参数); xxx表示有多种类型,int,String,Object
参数 : int columnIndex : 列所在的索引,从1开始
String columnLabel : 列名
例如:System.out.println(rs.getObject("cid")+"\t"+rs.getObject("cname"));
● 6. 释放资源
释放Connection 和 Statement
其中:1.2.3.6 是固定的步骤 , 4.5 根据增删改/查询有所不同
【防止用户使用SQL语句注入攻击】
执行者对象Statement接口有一个子接口
java.sql.PreparedStatement extends Statement
表示预编译的 SQL 语句的对象
SQL语句被预编译并存储在 PreparedStatement 对象中.然后可以使用此对象多次高效的执行该语句
实现步骤:
拼接SQL语句可以使用? 占位符(有参数的地方都使用 ? )
获取执行者对象 PreparedStatement
返回值: PreparedStatement PreparedStatement(String sql)
创建一个PreparedStatement 对象来讲参数化的SQL语句发送到数据库
传参数: 返回值返回的是PreparedStatement接口的实现类对象,有mysql驱动提供,可以使用接口接收
使用PreparedStatement中的方法
返回值: void setObject(int parameterIndex , Object x) 使用给定对象设置指定参数的值
参数: int parameterIndex : 第几个 ? 占位符, 从1开始
Object x : 占位符要使用的实际值
执行SQL语句 : 使用preparedStatement 中的方法
返回值: int executeUpdate()
INSERT(插入)、UPDATE(修改) 或 DELETE(删除) 语句;或者是无返回内容的 SQL 语句
返回值: ResultSet executeQuery()
在此preparedStatement 对象中执行SQL查询,并返回该查询生成的ResulSet对象
我的学习之路_第二十章_JDBC的更多相关文章
- 我的学习之路_第二十三章_HTML
Html : 超级文本语言 ( Hyper text Markup Language ) HTML 文件扩展名是 * .html HTML 结构都是有标签组成 通常情况下标签有开始标签和结束标签组成 ...
- 我的学习之路_第二十一章_JDBC连接池
JDBC连接池和DButils [DBCP连接池工具类] 使用读取配置文件的方式 DBCP中有一个工厂类 BasicDataSourceFactory 工厂类中有一个静态方法 返回值为: DataSo ...
- 我的学习之路_第二十五_javaScript
Javascript 作用:可以对表单数据进行校验,可以对页面实现一些动态效果 定义: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为 ...
- 我的学习之路_第二十七章_jQuery
jQueryjs类库 把常用对象或者方法封装起来,让我们写代码效率更高 1.jQuery 2.extjs [jQuery入门] jQuery的引入: 通过script标签的src属性引入 入门: 获取 ...
- 我的学习之路_第二十八章_JQuery 和validator插件
jQuery 利用jQuery进行遍历 js原生: for(var i=0;i>?;i++){ } jQuery: 方式一: 想要遍历的jQuery对象.each(function(index, ...
- 我的学习之路_第二十九章_bootstrap
bootstrap 内置了html,css,js插件为一体的前端框架 响应式布局: 设计一套页面就可以使用于很多现实设备 bootstrap: 1.入门(响应式布局的容器) 1.先进入jQuery的j ...
- 我的学习之路_第三十章_servlet
servlet:小服务程序 servlet是JavaWeb体系中的三大核心(servlet/Filter/Listener)之一,而且是最主要的那个. 作用:接受请求,处理请求,做出响应 继承体系:s ...
- 我的学习之路_第五章_Data,正则
Date 类 (时间类) 所属包:java.util.Date 构造方法: public Date() 返回的是当前时间 也就是1970-1-1到电脑目前的时间值,用毫秒来表示 public Date ...
- Python学习之路【第二篇】-pyc简介、Python常用的数据类型及其用法和常用运算符
1.pyc简介 python程序在运行时也有编译过程,编译后会产生.pyc文件.这是一种由python虚拟机执行的二进制文件(字节码),用于保存内存中PyCodeObject,以便加快程序的加载运行. ...
随机推荐
- IOS(二)基本控件UIButton、简易动画、transform属性、UIImageView
UIButton //1.设置UIButton 的左右移动 .center属性 获得 CGPoint 来修改x y //1.设置UIButton 的放大缩小 bounds属性 获得CGRect 然后通 ...
- 【Objective-C 基础】4.分类和协议
1.分类 OC提供了一种与众不同的方式--Category,可以动态的为已经存在的类添加新的行为(方法) 这样可以保证类的原始设计规模较小,功能增加时再逐步扩展. 使用Category对类进行扩展时, ...
- Vue2.0的变化 ,组件模板,生命周期,循环,自定义键盘指令,过滤器
组件模板: 之前: <template> <h3>我是组件</h3><strong>我是加粗标签</strong> </templat ...
- 每个国家对应的语言Locale和国家代码对照表
DNN3支持多语言,希望下面的语言代码与对应国家能对你有所帮助 语言代码 国家/ 地区 "" (空字符串) 无变化的文化 af 公用荷兰语 af-ZA 公用荷兰语 - 南非 sq ...
- lightOJ 1258 Making Huge Palindromes(KMP)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1258 就是求逆串和原串的匹配长度 答案就是原串长度的2倍减去匹配长度即可 第一次我将原 ...
- hdu3652 B-number 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3652 题意就是求区间内能被13整除并且包含”13“的数字的个数 感觉是比较中等的数位DP题目 我用的记 ...
- [笔记]我的Linux入门之路 - 01.Ubuntu安装
最近学机器学习,感觉matlab/octave用的人不多,想改用python.于是开始学python,辛辛苦苦学会了自己装环境和装第三方库,结果发现scipy库竟然没有win版本!于是想着那我得装个l ...
- MySQL数据库操作常用命令
MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...
- .Net程序员学用Oracle系列(7):视图、函数、存储过程、包
1.视图 1.1.创建.删除及调用普通视图 1.2.高级视图介绍 2.函数 2.1.系统函数介绍 2.2.创建.删除及调用自定义函数 3.存储过程 3.1.创建.修改及删除存储过程 3.2.调用存储过 ...
- 11、借助POI实现Java生成并打印excel报表(2)
11.POI打印功能 11.1.常用模块形式: HSSFPrintSetup printSetup = sheet.getPrintSetup(); printSetup.setVResolution ...