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. windows 禁用 magic mouse2 左右移动

    相信大部分程序员同志,只要用macbook都回装双系统的,本人也不例外,因为需要用到vs等很多开发工具. magic mouse2在osx上的表现本人不做评论,没用过几回,在win10上的表现太差劲了 ...

  2. mybatis使用-helloword(一)

    前言 首先感谢https://my.oschina.net/zudajun/blog/665956(jd上也出书了貌似)  这位作者.让自己能系统的看完和理解第一个框架的源码(其实我反复看了4遍以上, ...

  3. Set Time, Date Timezone in Linux from Command Line or Gnome | Use ntp

    https://www.garron.me/en/linux/set-time-date-timezone-ntp-linux-shell-gnome-command-line.html Set ti ...

  4. linux下最简单的端口转发工具

    linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载wget http://www.boutell.com/ ...

  5. TCP/IP解析(一):TCP/IP的工作方式

    本文包括下面内容: 1.TCP/IP协议系统 2.OSI模型 3.数据包 4.TCP/IP的交互方式 1.TCP/IP模型的协议层 分为四层: 网络訪问层:提供与物理网络连接的接口.依据硬件的物理地址 ...

  6. 本地jar安装至maven仓库

    本地jar安装至maven仓库 一般不建议通过这种方式配置依赖,通常做法建议你把本地包安装到maven仓库,命令如下: mvn install:install-file-DgroupId=com.ht ...

  7. 【C语言】编写函数,将一个数的指定位置置0或置1

    //编写函数,将一个数的指定位置置0或置1 #include <stdio.h> unsigned int set_bit(unsigned int num, int pos, int f ...

  8. html转义字符换行以及回车等的使用

    欢迎加入前端交流群交流知识&&获取视频资料:749539640 html换行回车转义字符 换行Line feed   回车Carriage Return  html中换行转义字符 的使 ...

  9. [源码管理] Microsoft Visual SourceSafe 2005 下载与配置

    一.VSS2005的下载地址是:百度搜索关键字:vss, 二.配置Microsoft Visual SourceSafe 2005的Internet访问 VSS2005发布以后,早就听说可以支持Int ...

  10. SwiftUI 官方教程(二)

    SwiftUI 官方教程(二) 2. 自定义 Text View 为了自定义 view 的显示,我们可以自己更改代码,或者使用 inspector 来帮助我们编写代码. 在构建 Landmarks 的 ...