浅入浅出JDBC————1分钟了解JDBC
一.了解基本的几个jdbc需要的类
1.1DriverManager类
DriverManager类是一个jdbc的驱动服务类。通常使用该类获得一个Connection对象,得到一个数据库的链接。
1.2.Connection类
每一个Coonection的对象都是一个数据库的链接对象,代表了一个物理会话。
1.3. Statement类
执行sql语句的工具接口。
1.4.PreparedStatement类
Statement类的子接口,一个预编译的Statment对象。
1.5.ResultSet类
查询结果集类
二.进行jdbc编程
2.1步骤
1.加载数据库驱动
使用Class类的forName方法来加载数据库链接驱动。
代码实例:
String dirver ="com.mysql.jdbc.Driver";//加载数据库驱动
Class.forName(dirver);
2.获取数据库的链接
通过上面的驱动服务类来获取数据库链接,使用DriverManager类的getConnection()方法来链接,得到一个数据库的物理会话。
getConnection(String url,String user,String pass)方法解析:
该方法返回一个Connection对象,参数中的url是指数据库的url。
mysql的url为:jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
代码实例:
String url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
String user="root";
String password="4399";
conn = DriverManager.getConnection(url,user,password);
3.通过Connection对象创建一个Statement对象。
在这里有三种Statement对象来创建,基本的Statement对象,还有就是预编译的Statement对象prepareStatement和执行存储过程的CallableStatement对象。
分别来看看三种对象的创建方式:
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获得一个物理回话
Connection conn= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false","root","4399");
//得到一个普通的Statement对象
Statement stat=conn.createStatement();
//得到预编译对象
PreparedStatement pre_stat=conn.prepareStatement("select * form students");
String str="{call pro_getCountById(?, ?, ?)}";//存储过程
//执行存储过程的对象
CallableStatement call_stat = conn.prepareCall(str);
4.使用Statement对象来执行sql语句
三种方法来执行sql语句:
1.execute()可以执行任何sql语句。
2.executeUpdate()执行DML语句和DDL语句,DDL语句返回0,DML语句返回影响行数。
3.executeQuery()只能执行查询语句,返回查询结果集ResultSet。
代码实例:
stat.executeUpdate("drop table if exists tab1");//执行DDL语句
stat.executeUpdate("insert into tabl values (10,'zhansan') ");//执行DML语句
ResultSet res=stat.executeQuery("select * from tab1");//执行DQL
5.操作结果集
理解ResultSet类:(引用)
ResultSet类是一种数据库查询结果存储类,就是当查询数据库的时候,可以将查询的结果放在具体的ResultSet对象中,其实我们把这种存储查询结果的ResultSet对象叫做ResultSet结果集。比如我们用aaa表示一个ResultSet对象。
那么查询的结果无非就是一些符合查询条件的记录集,ResultSet结果集有一个索引指针,最初这个指针是指向第一条记录的前一个位置,也就是没有指向任何内容,使用aaa.next()方法就会使指针往后移动指向下一个记录,所以一定要先执行一次next()函数才会让指针指向第一条记录。
操作结果集就是移动指针的过程。
6.回收数据库资源
需要关闭的资源:ResultSet、Statement、Connection。
浅入浅出JDBC————1分钟了解JDBC的更多相关文章
- Spring的数据库编程浅入浅出——不吹牛逼不装逼
Spring的数据库编程浅入浅出——不吹牛逼不装逼 前言 上文书我写了Spring的核心部分控制反转和依赖注入,后来又衔接了注解,在这后面本来是应该写Spring AOP的,但我觉得对于初学者来说,这 ...
- Spring MVC浅入浅出——不吹牛逼不装逼
Spring MVC浅入浅出——不吹牛逼不装逼 前言 上文书说了Spring相关的知识,对Spring来了个浅入浅出,大家应该了解到,Spring在三层架构中主做Service层,那还有Web层,也就 ...
- 浅入浅出EmguCv(三)EmguCv打开指定视频
打开视频的思路跟打开图片的思路是一样的,只不过视频是由一帧帧图片组成,因此,打开视频的处理程序有一个连续的获取图片并逐帧显示的处理过程.GUI同<浅入浅出EmguCv(二)EmguCv打开指定图 ...
- 浅入浅出EmguCv(一)OpenCv与EmguCv
最近接触计算机视觉方面的东西,于是准备下手学习opencv,从官网下载windows的安装版,配置环境,一系列步骤走完后,准备按照惯例弄个HelloWord.也就是按照网上的教程,打开了那个图像处理领 ...
- 浅入深出之Java集合框架(上)
Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...
- 浅入深出之Java集合框架(中)
Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...
- 浅入深出之Java集合框架(下)
Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. ...
- 浅入深出Vue:环境搭建
浅入深出Vue:环境搭建 工欲善其事必先利其器,该搭建我们的环境了. 安装NPM 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版本的NodeJS Windows安装程序 下载下来后,直 ...
- 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置
浅入深出Vue之工具准备(二):PostMan安装配置 由于家中有事,文章没顾得上.在此说声抱歉,这是工具准备的最后一章. 接下来就是开始环境搭建了~尽情期待 工欲善其事必先利其器,让我们先做好准备工 ...
- 浅入深出Vue:工具准备之WebStorm安装配置
浅入深出Vue之工具准备(一):WebStorm安装配置 工欲善其事必先利其器,让我们先做好准备工作吧 导航篇 WebStorm安装配置 所有工具的下载地址都可以在导航篇中找到,这里我们下载的是最新版 ...
随机推荐
- 3. Dubbo原理解析-Dubbo内核实现之动态编译 (转)
转载自 斩秋的专栏 http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577159 我们运行的Java代码,一般都是编译之后的字节码 ...
- Python将list中的string批量转化成int/float
data = ['] data = map(eval, data) print data 输出:[1, 3.2, 2] 但是在Python3下我们输入: ls=[1,2,3] rs=map(str,l ...
- Learning-Python【14】:匿名函数与函数递归
一.什么是匿名函数 匿名函数就是没有名字的函数,又叫lambda表达式.用于一些简单的需要用函数去解决的问题,特点是只能在定义时使用一次,且函数体只有一行 匿名函数的定义就相当于只产生一个变量的值,而 ...
- Linux下更新Git
查看git版本,卸载旧版本(如果没有安装git请直接到下一步) git --version yum remove git 安装依赖软件 yum install curl-devel expat-d ...
- js Infinity 属性
Infinity 属性用于存放表示正无穷大的数值. 说明 无法使用 for/in 循环来枚举 Infinity 属性,也不能用 delete 运算符来删除它. Infinity 不是常量,可以把它设置 ...
- 算法笔记--极大极小搜索及alpha-beta剪枝
参考1:https://www.zhihu.com/question/27221568 参考2:https://blog.csdn.net/hzk_cpp/article/details/792757 ...
- mysql查询今日、本周、本月记录
SELECT * FROM table_name WHERE to_days(createtime) = to_days(now()); SELECT * FROM table_name WHERE ...
- MVC框架初识
MVC全名是Model View Controller,即模型-视图-控制器的缩写,一种软件设计典范,用一种业务逻辑,数据,界面显示分离方法组织代码, 将业务逻辑聚集到一个部件里面,在改进和个性化定制 ...
- gedit embeded terminal 设置字体 颜色
/usr/lib/gedit/plugins/terminal.py # -*- coding: utf8 -*- # terminal.py - Embeded VTE terminal for g ...
- 网站压力测试工具http_load的安装与使用
一.安装 1.下载地址:http://www.acme.com/software/http_load/http_load-09Mar2016.tar.gz 2.解压后进入目录,执行make & ...