zoukankan      html  css  js  c++  java
  • Web09_MySQL多表&JDBC

    使用JDBC发送insert语句完成单表【添加】操作

    使用JDBC发送update语句完成单表【更新】操作

    使用JDBC发送delete语句完成单表【删除】操作

    使用JDBC发送select语句完成单表【查询】操作

    JDBCUtils_V3.java

    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    
    /**
     * 提供获取连接和释放资源的方法
     */
    public class JDBCUtils_V3 {
    	private static String driver;
    	private static String url;
    	private static String username;
    	private static String password;
    
    	/*
    	 * 静态代码块加载配置文件信息
    	 */
    	static {
    
    		try {
    			// 1.通过当前类获取类加载器
    			ClassLoader classLoader = JDBCUtils_V3.class.getClassLoader();
    			// 2.通过类加载器的方法获得一个输入流
    			InputStream is = classLoader.getResourceAsStream("db.properties");
    			// 3.创建一个properties对象
    			Properties props = new Properties();
    			// 4.加载输入流
    			props.load(is);
    			// 5.获取相关参数的值
    			driver = props.getProperty("driver");
    			url = props.getProperty("url");
    			username = props.getProperty("username");
    			password = props.getProperty("password");
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 获取连接方法
    	 * 
    	 * @return
    	 */
    	public static Connection getConnection() {
    		Connection conn = null;
    		try {
    			Class.forName(driver);
    			conn = DriverManager.getConnection(url, username, password);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    
    	public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
    		if (rs != null) {
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    		if (pstmt != null) {
    			try {
    				pstmt.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    		if (conn != null) {
    			try {
    				conn.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    

    TestUtils.java

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.junit.Test;
    
    import cn.itheima.jdbc.JDBCUtils_V1;
    import cn.itheima.jdbc.JDBCUtils_V2;
    import cn.itheima.jdbc.JDBCUtils_V3;
    
    /**
     * 测试工具类
     */
    public class TestUtils {
    
    	/*
    	 * 根据id更新信息方法
    	 */
    	@Test
    	public void testUpdateyId() {
    		Connection conn = null;
    		PreparedStatement pstmt = null;
    
    		try {
    			// 1.获取连接
    			conn = JDBCUtils_V3.getConnection();
    			// 2.编写sql语句
    			String sql = "update tbl_user set upassword=? where uid=?";
    			// 3.获取执行sql语句对象
    			pstmt = conn.prepareStatement(sql);
    			// 4.设置参数
    			pstmt.setString(1, "999");
    			pstmt.setInt(2, 1);
    			// 5.执行更新操作
    			int row = pstmt.executeUpdate();
    			if (row > 0) {
    				System.out.println("更新成功!");
    			} else {
    				System.out.println("更新失败!");
    			}
    			// 释放资源放在此处行么?【不行滴!】
    		} catch (Exception e) {
    			throw new RuntimeException(e);
    		} finally {
    			// 6.释放资源
    			JDBCUtils_V2.release(conn, pstmt, null);
    		}
    	}
    
    	/*
    	 * 根据id删除信息方法
    	 */
    	@Test
    	public void testDeleteById() {
    		Connection conn = null;
    		PreparedStatement pstmt = null;
    
    		try {
    			// 1.获取连接
    			conn = JDBCUtils_V3.getConnection();
    			// 2.编写sql语句
    			String sql = "delete from tbl_user where uid=?";
    			// 3.获取执行sql语句对象
    			pstmt = conn.prepareStatement(sql);
    			// 4.设置参数
    			pstmt.setInt(1, 3);
    			// 5.执行删除操作
    			int row = pstmt.executeUpdate();
    			if (row > 0) {
    				System.out.println("删除成功!");
    			} else {
    				System.out.println("删除失败!");
    			}
    			// 释放资源放在此处行么?【不行滴!】
    		} catch (Exception e) {
    			throw new RuntimeException(e);
    		} finally {
    			// 6.释放资源
    			JDBCUtils_V2.release(conn, pstmt, null);
    		}
    	}
    
    	/*
    	 * 添加用户信息方法
    	 */
    	@Test
    	public void testAdd() {
    		Connection conn = null;
    		PreparedStatement pstmt = null;
    
    		try {
    			// 1.获取连接
    			conn = JDBCUtils_V2.getConnection();
    			// 2.编写sql语句
    			String sql = "insert into tbl_user values(null,?,?)";
    			// 3.获取执行sql语句对象
    			pstmt = conn.prepareStatement(sql);
    			// 4.设置参数
    			pstmt.setString(1, "lisi");
    			pstmt.setString(2, "lisi");
    			// 5.执行插入操作
    			int row = pstmt.executeUpdate();
    			if (row > 0) {
    				System.out.println("添加成功!");
    			} else {
    				System.out.println("添加失败!");
    			}
    			// 释放资源放在此处行么?【不行滴!】
    		} catch (Exception e) {
    			throw new RuntimeException(e);
    		} finally {
    			// 6.释放资源
    			JDBCUtils_V2.release(conn, pstmt, null);
    		}
    	}
    
    	/**
    	 * 根据id查询用户信息
    	 */
    	@Test
    	public void testFindUserById() {
    		Connection conn = null;
    		PreparedStatement pstmt = null;
    		ResultSet rs = null;
    		try {
    			// 1.获取连接
    			conn = JDBCUtils_V1.getConnection();
    			// 2.编写sql语句
    			String sql = "select * from tbl_user where uid=?";
    			// 3.获取执行sql语句对象
    			pstmt = conn.prepareStatement(sql);
    			// 4.设置参数
    			pstmt.setInt(1, 1);
    			// 5.执行查询操作
    			rs = pstmt.executeQuery();
    			// 6.处理结果集
    			while (rs.next()) {
    				System.out.println(rs.getString(2) + "----" + rs.getString("upassword"));
    			}
    			// 释放资源放在此处行么?【不行滴!】
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally {
    			// 7.释放资源
    			JDBCUtils_V1.release(conn, pstmt, rs);
    		}
    	}
    }
    
  • 相关阅读:
    java实现按对象某个字段排序,排序字段和规则自定义
    JVM调优
    Spring事务的5种隔离级别
    Spring的七种事务传播机制
    jdk动态代理和cglib动态代理的区别
    spring事务的开启方式(编程式和声明式)
    jetty启动(server-connector-handle-start-join)
    浅谈background-size的几个属性值
    如何解决各类尺寸移动端自适应的问题?
    如何实现一个盒子看起来缓慢消失切换到另一个页面的效果?
  • 原文地址:https://www.cnblogs.com/denggelin/p/7215488.html
Copyright © 2011-2022 走看看