Javaweb学习笔记2(JDBC的CRUD、工具类的提取与测试、批处理)

JDBC执行增删改查

insert

insert用的执行sql语句的方法是executeUpdate(),返回影响的记录数量

package com.jdbctest;

import org.junit.Test;

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

public class Insert {
    @Test
    public void demo() throws ClassNotFoundException, SQLException {
    	//开头声明变量
        Connection conn = null;
        Statement stmt = null;
        //加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获得连接
        conn = DriverManager.getConnection("jdbc:mysql:///java", "root", "");
        // 获取执行sql语句的对象
        stmt = conn.createStatement();
        // 编写sql语句
        String sql = "insert into test values (4,111,'111')";
        //执行插入语句,使用executeUpdate方法
        int num = stmt.executeUpdate(sql);
        //返回的数字是收到影响的记录数量
        if (num > 0) {
            System.out.println("数据添加成功");
        }
        try {
            stmt.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        //手动设空
        stmt.close();
        try {
            conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        //手动设空
        conn = null;
    }
}

在这里插入图片描述
成功插入!
在这里插入图片描述

删除、修改

与插入同理,用executeUpdate()就可以了

查询

查询用executeQuery(),基本不用execute()

JDBC的工具类提取

在使用JDBC的时候有很多的重复操作,如:注册驱动、创建连接、释放资源。
我们可以通过提取工具类,把这些操作放到一个类里面来简化我们的操作

创建一个包,在里面创建一个JDBCtool类用来作为提取的工具类

package tool;
//注册驱动
// 获得连接
// 释放资源
import org.junit.Test;

import javax.xml.transform.Result;
import java.sql.*;

public class JDBCtool {
    // 先声明好变量
    private static final String driverClassName;
    private static final String url;
    private static final String username;
    private static final String password;

    // 为变量赋值,以便后期的引用
    static {
        driverClassName="com.mysql.jdbc.Driver";
        url="jdbc:mysql:///java";
        username="root";
        password="";
    }

    @Test
    // 注册驱动的方法
    public static void loadDriver(){
        try {
            Class.forName(driverClassName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //获得连接,一并注册驱动
    public static Connection getconn() throws SQLException {
        // 先定义变量,设空值
        Connection conn = null;
        loadDriver();
        conn = DriverManager.getConnection(url,username,password);
        return conn;
    }
    // 释放资源,由于查询语句会多一个资源result要释放,所以使用重载来做
    public static void release (Statement stmt,Connection conn){
        try {
            stmt.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        stmt = null;
        try {
            conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        conn = null;
    }
    //重载方法
    public static void release (ResultSet res, Statement stmt, Connection conn){
        try {
            res.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        res = null;
        try {
            stmt.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        stmt = null;
        try {
            conn.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        conn = null;
    }

}

工具类的测试

package com.jdbctest;

import org.junit.Test;

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

import static tool.JDBCtool.getConnection;
import static tool.JDBCtool.release;

public class ToolTest {
    @Test
    public void demo(){
        ResultSet res = null;
        Statement stmt = null;
        Connection conn = null;
        try {
            // 注册驱动并获得连接
            conn = getConnection();
            //获得执行sql语句的对象
            stmt = conn.createStatement();
            //编写sql语句并执行
            String sql = "select * from test";
            res = stmt.executeQuery(sql);
            //遍历结果集
            while (res.next()){
                System.out.print(res.getString("id")+' ');
                System.out.print(res.getString("username")+' ');
                System.out.println(res.getString("passwd"));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //释放资源
            release(res,stmt,conn);
        }
    }
}

查询成功
在这里插入图片描述

批处理

进行批处理有两个步骤
1、添加到批处理
2、执行批处理

//先写好几个sql语句
// 添加到批处理
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
stmt.addBatch(sql4);
stmt.addBatch(sql5);
// 执行批处理:
stmt.executeBatch();

预处理

预处理是用到了JDBC的PreparedStatement接口
这个接口用来动态的执行sql语句,通过这个接口实例执行的动态sql语句将被预编译并保存到PreparedStatement实例中,从而可以反复的执行这个sql语句

给多次改变的位置写上?,再用setString()给?赋值

public void demo2(){
		Connection conn = null;
		PreparedStatement pstmt = null;
		try{
			// 获得连接:
			conn = JDBCtool.getConnection();
			// 编写SQL语句:
			String sql = "insert into user values (null,?)";
			// 预编译SQL:
			pstmt = conn.prepareStatement(sql);
			for(int i=1;i<=10000;i++){
				pstmt.setString(1, "name"+i);
				// 添加到批处理
				pstmt.addBatch();
				// 执行批处理
				if(i % 1000 == 0){
					// 执行批处理:
					pstmt.executeBatch();
					// 清空批处理:
					pstmt.clearBatch();
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCtool.release(pstmt, conn);
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JDBC(Java Database Connectivity)是Java语言操作数据库的基础API,它提供了一种标准的方法来连接和操作各种关系型数据库。 JDBC的基本使用分为以下几个步骤: 1. 加载驱动程序:在使用JDBC操作数据库之前,需要先加载相应的驱动程序。不同的数据库需要加载不同的驱动程序,一般情况下驱动程序的jar包都会提供。 ```java Class.forName("com.mysql.jdbc.Driver"); ``` 2. 建立连接:使用DriverManager类的getConnection()方法连接数据库。 ```java String url = "jdbc:mysql://localhost:3306/test?useSSL=false"; String username = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, username, password); ``` 其中url为连接数据库的URL,username和password为连接数据库的用户名和密码。 3. 创建Statement对象:通过Connection对象的createStatement()方法创建一个Statement对象,用于执行SQL语句。 ```java Statement stmt = conn.createStatement(); ``` 4. 执行SQL语句:可以通过Statement对象的execute()或executeQuery()方法执行SQL语句,如果是更新操作则使用executeUpdate()方法。 ```java ResultSet rs = stmt.executeQuery("SELECT * FROM users"); ``` 5. 处理结果集:如果执行的SQL语句返回了结果集,则可以通过ResultSet对象进行处理。 ```java while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("id: " + id + ", name: " + name); } ``` 6. 关闭连接:使用完数据库后需要关闭连接,释放资源。 ```java rs.close(); stmt.close(); conn.close(); ``` 以上就是JDBC的基本使用过程,通过JDBC可以实现Java程序与数据库的交互,完成各种数据库操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

huamanggg

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

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

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

打赏作者

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

抵扣说明:

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

余额充值