jdbc链接mysql按照id查询_JDBC连接数据库详讲

本文详细介绍了JDBC技术,包括其概述、访问数据库的步骤和原理。通过实例演示了如何使用JDBC连接MySQL数据库,执行查询操作。重点讲解了注册驱动、获取连接、创建Statement、执行SQL以及处理ResultSet。最后,提到了通过JDBC工具类简化代码的过程,以及单元测试的使用。
摘要由CSDN通过智能技术生成

1.JDBC概述

946ecea7ad1d4d362ab6e68e46d51503.png

1.1 JDBC

JDBC(Java DataBase Connectivity),简单来讲JDBC是利用Java语言或程序连接并且访问数据库的一门技术,是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了查询和更新数据库操作方法,通常是面向关系型数据库的。这种方法摒弃了原先通过CMD挥着Navicat等工具连接数据库的方式。

1.2 访问数据库步骤

1.注册驱动2.获取连接

3.获取传输器

4.通过传输器发送SQL到服务器质性并且返回执行结果

5.数据处理

6.释放资源

1.3 原理

每次需要访问数据时就和数据库建立连接,操作,返回结果,关闭。需要走完整的六个步骤。

2.通过JDBC访问数据库

2.1准备数据--本机环境:win7,mysql(8.0.15)

set names utf8;

drop database if exists testjdbc_db;

create database testjdbc_db charset utf8;

use testjdbc_db;

create table account(

id int primary key auto_increment,

name varchar(50),

money double

);

insert into account values(null, 'tom', 1000);

insert into account values(null, 'andy', 1000);

insert into account values(null, 'tony', 1000);

2.2 创建项目导入驱动包

72b08a253b88a0048149ecf83f994dd3.png

09143fedc272c3c1b467729ea3a0313e.png

2.3 代码实现package com.MTngCat.Person.JDBC.Connection;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

/**

* JDBC连接数据库的步骤:

* @author MTing

* 步骤:

* 1.注册驱动

* 2.获取连接

* 3.获取传输器

* 4.通过传输器发送SQL到服务器质性并且返回执行结果

* 5.数据处理

* 6.释放资源

*/

public class connectionBasic {

public static void main(String[] args) throws Exception {

//1.注册驱动

Class.forName("com.mysql.cj.jdbc.Driver");

//2.获取连接

Connection conn = DriverManager.getConnection(

"jdbc:mysql://localhost:3306/testjdbc_db?characterEncoding=UTF-8&serverTimezone=GMT%2B8&useServerPrepStms=true&cachePrepStms=true",

"root",

"MTingCat819"

);

//3.获取传输器

Statement st = conn.createStatement();

//4.通过传输器发送SQL到服务器执行并且返回执行结果

String sql = "select * from account";

ResultSet rs = st.executeQuery(sql);

//5.数据处理

while( rs.next() ) {

int id = rs.getInt("id");

String name = rs.getString("name");

double money = rs.getDouble("money");

System.out.println(id + ":" + name + ":" + money );

}

//6.释放资源

// rs.close();

// st.close();

// conn.close();

if( rs != null ) {

try {

rs.close();

} catch (Exception e) {

e.printStackTrace();

}finally {

rs = null;

}

}

if( st != null ) {

try {

st.close();

} catch (Exception e) {

e.printStackTrace();

}finally {

st = null;

}

}

if( conn != null ) {

try {

conn.close();

} catch (Exception e) {

e.printStackTrace();

}finally {

conn = null;

}

}

}

}

2.4 代码注意事项详注://1.注册驱动

Class.forName("com.mysql.cj.jdbc.Driver");

①MySQL版本在8.0之前的驱动的全限定类名是"com.mysql.jdbc.Driver"

②MySQL版本在8.0之后的驱动的全限定类名是"com.mydql.cj.jdbc.Driver"//2.获取连接

Connection conn = DriverManager.getConnection(

"jdbc:mysql://localhost:3306/testjdbc_db?characterEncoding=UTF-8&serverTimezone=GMT%2B8&useServerPrepStms=true&cachePrepStms=true",

"root",

"MTingCat819"

);

①参数一:jdbc:mysql://localhost:3306/testjdbc_db

deb97d2b07a40f6aabb6646d00e12fc5.png

用于指定访问的是哪一个数据库,如果连接本地数据库,可以简写为:jdbc:mysql:///testjdbc_db

②参数二:characterEncoding=UTF-8&serverTimezone=GMT%2B8"

这里指定的是编码格式和时区,MySQL驱动8.0之后的版本都需要自己配置时区。

③参数三:useServerPrepStms=true

保证MySQL驱动会把以连接器PreparedStatement类型传输来的SQL语句发送给数据库进行预编译为函数交给服务器存储key。

④参数四:cachePrepStms=true

保证在执行相同的语句时数据库不会进行二次编译,原因保证在第一次预编译为函数后的key值存在于服务器

⑤参数五:

⑥参数六://3.获取传输器

Statement st = conn.createStatement();

该方法用于向数据库服务器发送SQL语句的Statement传输对象。//4.通过传输器发送SQL到服务器质性并且返回执行结果

String sql = "select * from account";

ResultSet rs = st.executeQuery(sql);

//用于向数据库发送查询类型的sql语句,返回一个ResultSet对象结果集

//int rows = st.executeUpdate(sql)

//用于向数据库发送更新(增加、删除、修改)类型的sql语句,返回一个int值,表示影响的记录行数

①ResultSet结果集对象:用于封装SQL语句查询的结果,该对象提供了遍历数据以及获取数据的方法。//5.数据处理

while( rs.next() ) {

int id = rs.getInt("id");

String name = rs.getString("name");

double money = rs.getDouble("money");

System.out.println(id + ":" + name + ":" + money );

}

①遍历数据行的方法:next()使指向数据行的箭头向下移动一行,并且返回一个布尔类型的结果,后面有数据组则返回true,发欧泽false

②获取数据的方法getInt(int columnIndex)

getInt(String columnLable)

getString(int columnIndex)

getString(String columnLable)

getDouble(int columnIndex)

getDouble(String columnLable)

getObject(int columnIndex)

getObject(String columnLable)//6.释放资源

rs.close();

st.close();

conn.close();

①释放资源:越晚获取的资源越先关闭

②为避免程序抛出异常释放资源的代码不会执行,应该把代码放在finally块中if( rs != null ) {

try {

rs.close();

} catch (Exception e) {

e.printStackTrace();

}finally {

rs = null;

}

}

if( st != null ) {

try {

st.close();

} catch (Exception e) {

e.printStackTrace();

}finally {

st = null;

}

}

if( conn != null ) {

try {

conn.close();

} catch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值