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的更多相关文章

  1. 我的学习之路_第二十三章_HTML

    Html : 超级文本语言 ( Hyper text Markup Language ) HTML 文件扩展名是 * .html HTML 结构都是有标签组成 通常情况下标签有开始标签和结束标签组成 ...

  2. 我的学习之路_第二十一章_JDBC连接池

    JDBC连接池和DButils [DBCP连接池工具类] 使用读取配置文件的方式 DBCP中有一个工厂类 BasicDataSourceFactory 工厂类中有一个静态方法 返回值为: DataSo ...

  3. 我的学习之路_第二十五_javaScript

    Javascript 作用:可以对表单数据进行校验,可以对页面实现一些动态效果 定义: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为 ...

  4. 我的学习之路_第二十七章_jQuery

    jQueryjs类库 把常用对象或者方法封装起来,让我们写代码效率更高 1.jQuery 2.extjs [jQuery入门] jQuery的引入: 通过script标签的src属性引入 入门: 获取 ...

  5. 我的学习之路_第二十八章_JQuery 和validator插件

    jQuery 利用jQuery进行遍历 js原生: for(var i=0;i>?;i++){ } jQuery: 方式一: 想要遍历的jQuery对象.each(function(index, ...

  6. 我的学习之路_第二十九章_bootstrap

    bootstrap 内置了html,css,js插件为一体的前端框架 响应式布局: 设计一套页面就可以使用于很多现实设备 bootstrap: 1.入门(响应式布局的容器) 1.先进入jQuery的j ...

  7. 我的学习之路_第三十章_servlet

    servlet:小服务程序 servlet是JavaWeb体系中的三大核心(servlet/Filter/Listener)之一,而且是最主要的那个. 作用:接受请求,处理请求,做出响应 继承体系:s ...

  8. 我的学习之路_第五章_Data,正则

    Date 类 (时间类) 所属包:java.util.Date 构造方法: public Date() 返回的是当前时间 也就是1970-1-1到电脑目前的时间值,用毫秒来表示 public Date ...

  9. Python学习之路【第二篇】-pyc简介、Python常用的数据类型及其用法和常用运算符

    1.pyc简介 python程序在运行时也有编译过程,编译后会产生.pyc文件.这是一种由python虚拟机执行的二进制文件(字节码),用于保存内存中PyCodeObject,以便加快程序的加载运行. ...

随机推荐

  1. OC中NSFileManager

    NSFileManager介绍 NSFileManager是用来管理文件系统的 它可以用来进行常见的文件\文件夹操作(拷贝.剪切.创建等) NSFileManager使用了单例模式singleton ...

  2. Git相关操作及记录

    一.软件 1.下载Git客户端软件 Widows平台: https://github.com/git-for-windows/git/releases/download/v2.13.0.windows ...

  3. Servlet简单总结(一)

    一.Servlet简单总结 1.1. 什么是Servlet Servlet是JavaEE三大组建之一,是使用Java语言编写服务器端的程序,主要用来处理Web应用程序中的请求-响应.Servlet并没 ...

  4. [刷题]算法竞赛入门经典(第2版) 4-6/UVa508 - Morse Mismatches

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,10 ms) //UVa508 - Morse Mismatches #include< ...

  5. Java学习笔记——浅谈数据结构与Java集合框架(第二篇、Queue、Set)

    江南好,何处异京华. 香散翠帘多在水,绿残红叶胜于花.无事避风沙. --<纳兰词> 诗词再好,大图不能忘 上大图: 先说说栈和队列: 栈就好比手枪的弹匣,你往里面压入子弹,最先压入的子弹就 ...

  6. 关于WannaCry病毒的见解与预防,我有话说!

    好久没写博客了,自从定性专做技术扩展服务后,已经有两年半没有正式写过博客,要不是这次WannaCry病毒的厉害程度,我也懒得去写博客,为什么呢?写技术文章吗?两年多没有研究新的技术,没有什么好写的!所 ...

  7. linux系统管理--查看进程

    关于进程的查看,大家都不会陌生 ,主要是ps和pstree命令. ps  aux    查看系统中所有进程,使用BSD操作系统格式.(注意:不是ps -aux) 执行结果 USER :该进程是由哪个用 ...

  8. PHP. 01. C/S架构、B/S架构、服务器类型、服务器软件、HTTP协议/服务器、数据库、服务器web开发、PHP简介/常见语法、PHPheader()、 PHP_POST/GET数据获取和错误处理

    C/S架构 Client/Server 指客户端,服务器 架构的意思 优点:性能性高:可将一部分的计算工作放在客户端上,服务器只需处理出局即可   洁面炫酷,可使用更多系统提供的效果 缺点:更新软件需 ...

  9. java swing 添加 jcheckbox复选框

    总体上而言,Java Swing编程有两大特点:麻烦.效果差. 麻烦是说由于设计器的使用不方便(如果您希望使用窗体设计器通过快速拖拽控件建立您的Java Swing GUI程序,请您使用MyEclip ...

  10. Http学习之使用HttpURLConnection发送post和get请求(1)

    最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放 ...