JDBC实现在sql里的CRUD

各个函数作用

Maintest :主函数

Jdbcutil:工具类构建(主要包括建立连接、释放资源)

Properties:配置文件

Testdemo:负责单元测试

 

流程:

Maintest函数快结束时会调用Jdbcutil工具类Jdbcutil工具类里面有个static静态代码块会读取Properties配置文件的属性,最后Testdemo负责单元测试

 

使用单元测试,测试代码


1. 定义一个类, TestXXX , 里面定义方法 testXXX.

2. 添加junit的支持。 

       右键工程 --- add Library --- Junit --- Junit4

3. 在方法的上面加上注解 , 其实就是一个标记。

       @Test
       public void testQuery() {
           ...
       }

4. 光标选中方法名字,然后右键执行单元测试。  或者是打开outline视图, 然后选择方法右键执行。

 

 

各个函数代码:

Maintest

package com.itheima.jdbc.test;

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

import com.itheima.jdbc.util.JDBCUtil;


public class MainTest {

	public static void main(String[] args) {
		
		
		//查询
		Connection conn  = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			//1. 获取连接对象
			conn = JDBCUtil.getConn();
			//2. 根据连接对象,得到statement
			st = conn.createStatement();
			
			//3. 执行sql语句,返回ResultSet
			String sql = "select * from t_stu";
			rs= st.executeQuery(sql);
			
			//4. 遍历结果集
			while(rs.next()){
				String name = rs.getString("name");
				int age = rs.getInt("age");
				
				System.out.println(name+"   " + age);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			JDBCUtil.release(conn, st, rs);
		}
		
	}

}

Jdbcutil

package com.itheima.jdbc.util;

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtil {
	
	static String driverClass = null;
	static String url = null;
	static String name = null;
	static String password= null;
	
	static{
		try {
			//1. 创建一个属性配置对象
			Properties properties = new Properties();
			InputStream is = new FileInputStream("jdbc.properties");
			
			//使用类加载器,去读取src底下的资源文件。 后面在servlet
//			InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
			//导入输入流。
			properties.load(is);
			
			//读取属性
			driverClass = properties.getProperty("driverClass");
			url = properties.getProperty("url");
			name = properties.getProperty("name");
			password = properties.getProperty("password");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 获取连接对象
	 * @return
	 */
	public static Connection getConn(){
		Connection conn = null;
		try {
			Class.forName(driverClass);
			//静态代码块 ---> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());
			//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
			//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
			//2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。
			conn = DriverManager.getConnection(url, name, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	/**
	 * 释放资源
	 * @param conn
	 * @param st
	 * @param rs
	 */
	public static void release(Connection conn , Statement st , ResultSet rs){
		closeRs(rs);
		closeSt(st);
		closeConn(conn);
	}
	public static void release(Connection conn , Statement st ){
		closeSt(st);
		closeConn(conn);
	}

	
	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;
		}
	}
	
	private static void closeConn(Connection conn){
		try {
			if(conn != null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			conn = null;
		}
	}
}

Properties

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/50ti
name=root
password=xxxxxx

Testdemo

package com.itheima.jdbc.test;

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

import org.junit.Test;

import com.itheima.jdbc.util.JDBCUtil;

/**
 * 使用junit执行单元测试
 */
public class TestDemo {

	@Test
	public void testQuery() {
		// 查询
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
	
		try {
			// 1. 获取连接对象
			conn = JDBCUtil.getConn();
			// 2. 根据连接对象,得到statement
			st = conn.createStatement();

			// 3. 执行sql语句,返回ResultSet
			String sql = "select * from t_stu";
			rs = st.executeQuery(sql);

			// 4. 遍历结果集
			while (rs.next()) {
				String name = rs.getString("name");
				int age = rs.getInt("age");

				System.out.println(name + "   " + age);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtil.release(conn, st, rs);
		}

	}


	@Test
	public void testInsert(){
		
		// 查询
		Connection conn = null;
		Statement st = null;
		try {
			// 1. 获取连接对象
			conn = JDBCUtil.getConn();
			// 2. 根据连接对象,得到statement
			st = conn.createStatement();
			
			//3. 执行添加
			String sql = "insert into t_stu values(null , 'aobama' , 59)";
			//影响的行数, ,如果大于0 表明操作成功。 否则失败
			int result = st.executeUpdate(sql);
			
			if(result >0 ){
				System.out.println("添加成功");
			}else{
				System.out.println("添加失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JDBCUtil.release(conn, st);
		}

	}
	
	@Test
	public void testDelete(){
		
		// 查询
		Connection conn = null;
		Statement st = null;
		try {
			// 1. 获取连接对象
			conn = JDBCUtil.getConn();
			// 2. 根据连接对象,得到statement
			st = conn.createStatement();
			
			//3. 执行添加
			String sql = "delete from t_stu where name='aobama'";
			//影响的行数, ,如果大于0 表明操作成功。 否则失败
			int result = st.executeUpdate(sql);
			
			if(result >0 ){
				System.out.println("删除成功");
			}else{
				System.out.println("删除失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JDBCUtil.release(conn, st);
		}

	}
	@Test
	public void testUpdate(){
		
		// 查询
		Connection conn = null;
		Statement st = null;
		try {
			// 1. 获取连接对象
			conn = JDBCUtil.getConn();
			// 2. 根据连接对象,得到statement
			st = conn.createStatement();
			
			//3. 执行添加
			String sql = "update t_stu set age = 26 where name ='qyq'";
			//影响的行数, ,如果大于0 表明操作成功。 否则失败
			int result = st.executeUpdate(sql);
			
			if(result >0 ){
				System.out.println("更新成功");
			}else{
				System.out.println("更新失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JDBCUtil.release(conn, st);
		}
		
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值