Java EE开发第四章:JDBC的基本使用

前言:JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。简单来说就是java操作数据库,jdbc是oracle公司指定的一套规范。

---------作用--------

JDBC的作用:发送数据库,发送SQL语句,处理结果。

提示:如果你还对SQL还不是很了解的话建议翻看《Java EE开发第一二三章》

------操作步骤---------

JDBC的操作步骤:

1.创建数据库和表

2.创建一个Java项目

3.导入JDBC的驱动jar包(百度一大把)

4.撸代码:注册驱动、获取连接、编写SQL语句、创建预编译的语句执行者、设置参数、执行SQL语句、处理结果、释放资源。

---------代码实现--------

打开MYSQL进行初始化数据库和表:

	CREATE DATABASE day07;
	USE day07;	
		
	create table category(
		cid varchar(20) primary key,
		cname varchar(20)
	);
		
	insert into category values('c001','电器');
	insert into category values('c002','服饰');
	insert into category values('c003','化妆品');
	insert into category values('c004','书籍');
Java代码:
	@Test
	public void f2() throws Exception {
		// 注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		// DriverManager.registerDriver(new Driver());

		// 获取链接
		Connection conn = DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/day07", "root", "123");
		// 编写sql
		String sql = "select * from category";

		// 创建语句执行者
		PreparedStatement st = conn.prepareStatement(sql);

		// 设置参数
		// 执行sql
		ResultSet rs = st.executeQuery();
		
		//处理结果
		while(rs.next()){
			System.out.println(rs.getString("cid")+"::"+rs.getString("cname"));
		}
		
		rs.close();
		st.close();
		conn.close();

	}
运行截图:




----------配置文件以及工具类的实现----------

不难发现,如果我们想继续再次操作数据库进行增删改查的话,免不得又要重复以上代码,特别是数据库的链接以及登陆账号密码,所以我们需要在src目录下配置文件为properties,通过 ResourceBundle工具快速获取里面的配置信息。

使用步骤:
1.获取ResourceBundle 对象:static ResourceBundle getBundle("文件名称不带后缀名") 
2.通过ResourceBundle 对象获取配置信息 :String getString(String key) :通过执行key获取指定的value

这是我的配置文件:(请无视我的账号名字和密码)

当然了为了方便使用jdbc我们可以写一个jdbc的工具类(释放资源作用):

package com.fly.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;

public class JdbcUtils {

	static final String DRIVERCLASS;
	static final String URL;
	static final String USER;
	static final String PASSWORD;

	static {
		ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
		// 获取指定的内容
		DRIVERCLASS = bundle.getString("driverClass");
		URL = bundle.getString("url");
		USER = bundle.getString("user");
		PASSWORD = bundle.getString("password");
	}

	static {
		// 注册驱动
		try {
			Class.forName(DRIVERCLASS);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	// 获取链接
	public static Connection getConnection() throws Exception {
		Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
		return conn;
	}

	/**
	 * 
	 * @param conn链接
	 * @param st语句执行者
	 * @param rs结果集
	 */
	public static void closeResource(Connection conn, Statement st, ResultSet rs) {
		closeResultSet(rs);
		closeStatement(st);
		closeConn(conn);
	}

	/**
	 * 释放链接
	 * 
	 * @param conn 链接
	 */
	private static void closeConn(Connection conn) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			conn = null;
		}
	}

	/**
	 * 释放语句执行者
	 * 
	 * @param st语句执行者
	 */
	private static void closeStatement(Statement st) {
		if (st != null) {
			try {
				st.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			st = null;
		}
	}

	/**
	 * 释放结果集
	 * 
	 * @param rs结果集
	 */
	private static void closeResultSet(ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			rs = null;
		}
	}
}
------- 数据库的增删改查------

工具类已经实现了,ok接下来我们借助工具类往数据库中插入一条数据库:

@Test
	public void f3(){
		Connection conn = null;
		ResultSet rs = null;
		PreparedStatement st = null;
		
		try {
			//获取链接
			conn = JdbcUtils.getConnection();
			//编写sql
			String sql = "insert into category values(?,?)";
			//获取语句执行者
			st = conn.prepareStatement(sql);
			//设置参数
			st.setString(1, "coo6");
			st.setString(2, "户外");
			//执行sql
			int i = st.executeUpdate();
			//处理结果
			if(i == 1){
				System.out.println("success");
			}else {
				System.out.println("fail");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			//释放资源
			JdbcUtils.closeResource(conn, st, rs);
		}
	}
更新数据:
//更新数据
	@Test
	public void f4(){
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		
		try {
			conn = JdbcUtils.getConnection();
			String sql = "update category set cname = ? where cid = ?";
			st = conn.prepareCall(sql);
			
			st.setString(1, "手机");
			st.setString(2, "coo6");
			
			int i = st.executeUpdate();
			if(i == 1){
				System.out.println("success");
			}else {
				System.out.println("fail");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			//关闭资源
			JdbcUtils.closeResource(conn, st, rs);
		}
	}
删除数据:
@Test
	public void f5(){
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		
		try {
			conn = JdbcUtils.getConnection();
			String sql = "delete from category where cid = ?";
			st = conn.prepareCall(sql);
			st.setString(1, "coo6");
			int i = st.executeUpdate();
			if (i == 1) {
				System.out.println("success");
			}else {
				System.out.println("fail");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JdbcUtils.closeResource(conn, st, rs);
		}
	}
-------完-----

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等待着冬天的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值