JDBC的概念
在使用之前我们先了解一下JDBC的概念, JDBC的全称是数据库连接(Java Database Connectivity),它是一套用于执行SQL语句时的API,应用程序可以通过这套API连接到关系型数据库,并且使用SQL语句来完成数据库中的查询,添加,更改,删除等操作.。
不同类型的数据库内部处理数据的方式也是不同的,如果直接用数据库厂商提供的方法来建立访问数据,应用程序的可移植性就会变得非常差,如果某个用户在当前的程序中使用的是MySQL的数据库,如果换成Oracle的数据库这样需要改动大量的代码,有了JDBC这样的情况就不存在了,因为JDBC 要求数据库的厂商按照统一的要求来提供数据库的驱动,这就使代码的通用性更强.

由上图看出,JDBC在应用程序和数据库之间是一个桥梁的作用,不同的驱动与不同的数据连接, 连接后进行相应的操作

了解JDBC中的API
Driver 接口
Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门给数据库厂商使用。在编写JDBC程序时,必须要把所有数据库驱动程序或者类库加载到classpath中去。

DriverManager接口
方法 作用
regsiterDriver(Driver driver) 用于向DriverManager中注册JDBC的驱动程序
getConnection(String url, String user,String password) 建立与数据库的连接
Connection 接口
方法 作用
createStatement( ) 创建statement对象将SQL语句发送到数据库中
prepareStatement( ) 创建preparestatement对象将SQL语句发送到数据库中
prepareCall() 创建CallableStatement对象调用数据库的存储过程
注意:在这里我们看到createStatement和prepareStatement方法都是创建对象将SQL语句发送到数据库中,但是有什么不同呢?我们暂且用createStatement方法,prepareStatement方法我们之后再谈它的用途。

Statement接口
方法 作用
execute(String sql) 执行SQL 语句返回boolean类型的值 如果为true表示有结果,通过ResultSet方法查询结果
executeUpdate(String sql) 执行SQL语句中的 insert delete update 方法返回值为int类型
executeQuery 执行SQL中select语句
ResultSet接口
方法 描述
getString(String name) 获取String类型的值 ,name代表字段的名称
getInt(int index) 获取int类型的值,index代表字段的名称
next() 当前位置到下一行
previous() ResultSet的上一行
absolute(int row) ResultSet的指定位置
建立连接步骤
在写代码之气需要把MySQL的jar包导入到项目中,找到MySQL\Connector J 8.0 中的mysql-connector-java-8.0.14.jar文件导入工程中

要建立数据库的连接,首先要注册MySQL数据库的驱动
完成数据库驱动的注册,建立数据库的连接
创建statement对象,
执行sql语句
遍历查询数据
释放资源
JDBC基础代码
解释了建立连接数据库的步骤和常用的API,接下来就看看最基础的代码如何实现的:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class pracjdbc {
public static void main(String [] args) {
try {
//1.注册驱动
DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
/*2.建立数据库的连接 获取参数依次是url,user,password url连接本地数据库,user 用户名称,password数据库密码*/
Connection conn=
DriverManager.getConnection("jdbc:mysql://localhost/studentinformation?serverTimezone=GMT%2B8", "root", "81604152");
//3.创建statement对象
Statement st=conn.createStatement();
String sql = "select * from info";
//4.执行sql语句
ResultSet rs = st.executeQuery(sql);
//5.遍历查询数据
while(rs.next()) {
int id =rs.getInt("id");
String name = rs.getString("name");
System.out.println(id+":"+name);
}
//6.释放资源
conn.close();
st.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
JDBC代码改进
刚刚写最进本的的代码现在我们看一下在刚刚的基础上稍微做一些改进

资源释放
在资源释放这里起始并不是这样写法,实际使用通过finally语句块
将资源释放的
try {
if(conn != null) {
conn.close();
}
} catch (SQLException e) {

e.printStackTrace();
}finally{
conn = null;
}
1
2
3
4
5
6
7
8
9
10
这样写过于冗长,统一写一个类取完成这个操作

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCutils {
public static void ReleaseAll(Connection conn, ResultSet rs, Statement st) {
CloseConn(conn);
CloseSt(st);
CloseRs(rs);
}
public static void ReleaseAll(Connection conn, Statement st) {
CloseConn(conn);
CloseSt(st);
}
private static void CloseConn(Connection conn) {
try {
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
conn = null;
}
}
private static void CloseRs(ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
rs = null;
}

}
private static void CloseSt(Statement st) {
try {
if(st != null) {
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
st = null;
}

}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
再来看看建立驱动的步骤 进入底层源码

static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
1
2
3
4
5
6
7
8
Driver中已经建立了驱动实际上我们自己建立驱动就是已经多余了,
修改代码如下

Class.forName("com.mysql.cj.jdbc.Driver");
1
2
完整代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class pracjdbc {
public static void main(String [] args) {
Connection conn= null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
conn= DriverManager.getConnection("jdbc:mysql://localhost/studentinformation?serverTimezone=GMT%2B8", "root", "81604152");
st=conn.createStatement();
String sql = "select * from info";
rs = st.executeQuery(sql);
while(rs.next()) {
int id =rs.getInt("id");
String name = rs.getString("name");
System.out.println(id+":"+name);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCutils.ReleaseAll(conn, rs, st);
}
}
}
---------------------

JDBC连接MySQL数据库(一)——数据库的基本连接的更多相关文章

  1. JDBC连接MySQL数据库代码

    ******************************************************1********************************************* ...

  2. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  3. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  4. Crystal Reports 2008(水晶报表) JDBC连接mysql数据库

    在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...

  5. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  6. JDBC连接MySQL数据库及示例

      JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一 ...

  7. java jdbc 连接mysql 数据库

    JDBC连接MySQL 加载及注册JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); Class.forName("com. ...

  8. java用JDBC连接MySQL数据库的详细知识点

    想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...

  9. JDBC 连接mysql数据库

    JDBC 连接mysql数据库jar包:mysql-connector-java-5.1.47.jar 下载:mysql-connector-java-5.1.47.jar jdbc:java dat ...

  10. 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)

             分页查询信息       使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...

随机推荐

  1. 洛谷 P2341 BZOJ 1051 [HAOI2006]受欢迎的牛

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...

  2. 【ACM】hdu_2020_绝对值排序_201308050929

    绝对值排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  3. 开源分布式MySQL中间件探究与应用 dba+

  4. HDOJ 5421 Victor and String 回文串自己主动机

    假设没有操作1,就是裸的回文串自己主动机...... 能够从头部插入字符的回文串自己主动机,维护两个last点就好了..... 当整个串都是回文串的时候把两个last统一一下 Victor and S ...

  5. 怎样 获取 ios的系统版本

    获得Ios系统版本的函数,比方 函数定义: [cpp] view plaincopy + (float)getIOSVersion; 函数实现: [cpp] view plaincopy + (flo ...

  6. 使用imgareaselect 辅助后台进行图片裁剪

    由于项目其中用到图片裁剪,本来能够不用到后台进行裁剪的,可是要兼容万恶的IE浏览器,所以不得不使用后台进行裁剪. 这次使用到imgareaselect 插件获取须要裁剪区域的坐标.再由后台进行裁剪操作 ...

  7. 【字符串处理算法】字符串包括的算法设计及C代码实现

    一.需求描写叙述 给定一个长字符串和一个短字符串.编敲代码推断短字符串中的全部字符是否都在长字符串中.假设是,则长字符串包括短字符串:反之,不包括. 为了尽量包括大多数情况,字符串中能够包括大写和小写 ...

  8. Linux 管道是什么 ?原理

    简单点就是说,一个命令的结果作为另外一个命令(结果)的输入 . 管道是linux提供的一种常见的进程通信工具,也是很多shell命令能够灵活组合产生强大用途的一个重要工具. 管道是什么? 管道,顾名思 ...

  9. python为在线漫画站点自制非官方API(未完待续)

    接下来将记录我一步一步写一个非官方API的过程,由于一些条件的约束,最后的成品可能非常粗暴简陋 如今介绍要准备的全部工具: 系统:ubuntu 14.04 语言:python 2.7 须要自行安装的库 ...

  10. oc22--多态

    // // Animal.h #import <Foundation/Foundation.h> @interface Animal : NSObject { int _age; } - ...