4-4 自由编程 作业

来源:4-4 自由编程

csm032

2020-04-23 22:28:30

————————JDBCUtils————————
package com.imooc.jdbc.utils;

import java.io.IOException;
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;

import org.junit.Test;

public class JDBCUtils {	
	private static final String driverClass;
	private static final String url;
	private static final String username;
	private static final String password;	
	
	//引入配置信息
	static {		
		Properties pros=new Properties();
		InputStream is=JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
		try {
			pros.load(is);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		driverClass=pros.getProperty("driverClass");
		url=pros.getProperty("url");
		username=pros.getProperty("username");
		password=pros.getProperty("password");					
	}
	
	//加载驱动
	public static void loadDriver() throws ClassNotFoundException {
		Class.forName(driverClass);
	}
	
	//建立连接
	public static Connection getConnection() throws Exception {				
		loadDriver();
		Connection conn=DriverManager.getConnection(url, username, password);		
		return conn;		
	}
	
	//解除资源占用
	public static void release(ResultSet rs,Statement stmt,Connection conn) {
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			rs=null;
		}
		
		if(stmt!=null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			stmt=null;
		}
		
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			conn=null;
		}		
	}
	
	//查询数据表信息
	public static String searchInfo(ResultSet rs) throws SQLException {
		String str="";
		while(rs.next()) {
			int id=rs.getInt("id");
			String name=rs.getString("name");
			float price=rs.getFloat("price");
			String desp=rs.getString("desp");
			str=str+id+" "+name+" "+price+" "+desp+'\n';			
		}
		return str;		
	}

}
————————JDBCDemo————————
package com.imooc.jdbc.demo;

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

import org.junit.jupiter.api.Test;

import com.imooc.jdbc.utils.JDBCUtils;

public class JDBCDemo {
	@Test
	public void demo1() {
		Connection conn=null;
		Statement stmt=null;
		ResultSet rs=null;
		String info="";
		try {			
			JDBCUtils.loadDriver();
			conn=JDBCUtils.getConnection();
			stmt=conn.createStatement();
			String sql="insert goods(name,price,desp) values('手机',2000.0,'黑色,存储容量32G'),  ('冰箱',1500.0,'银色,对开门'),  ('洗衣机',3000.0,'滚筒'),  ('空调',4000,'变频空调')";
			int i=stmt.executeUpdate(sql);
			if(i>0) {
				System.out.println("1.表格中的四条数据添加数据库成功!\n");		
				
				System.out.println("2.显示所有数据如下:");	
				sql="select * from goods";				
				rs=stmt.executeQuery(sql);
				info=JDBCUtils.searchInfo(rs);
				System.out.println(info);
				
				System.out.println("3.name值为冰箱的数据如下:");	
				sql="select * from goods where name='冰箱'";
				rs=stmt.executeQuery(sql);
				info=JDBCUtils.searchInfo(rs);
				System.out.println(info);				
			}else {
				System.out.println("添加数据失败");
			}
			
			sql="update goods set price=5000 where name='手机'";
			i=stmt.executeUpdate(sql);
			if(i>0) {
				System.out.println("4.将name值为手机的数据的price值改为5000");					
				System.out.println("显示所有数据如下:");	
				sql="select * from goods";				
				rs=stmt.executeQuery(sql);
				info=JDBCUtils.searchInfo(rs);
				System.out.println(info);
			}else {
				System.out.println("修改价格失败");
			}
			
			sql="  delete from goods where name='洗衣机'";
			i=stmt.executeUpdate(sql);
			if(i>0) {
				System.out.println("5.删除name值为洗衣机的数据");					
				System.out.println("显示所有数据如下:");	
				sql="select * from goods";				
				rs=stmt.executeQuery(sql);
				info=JDBCUtils.searchInfo(rs);
				System.out.println(info);
			}else {
				System.out.println("删除数据失败");
			}
			
			System.out.println("6.按价格升序排序显示所有数据:");	
			sql="select * from goods order by price asc";				
			rs=stmt.executeQuery(sql);
			info=JDBCUtils.searchInfo(rs);
			System.out.println(info);			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			JDBCUtils.release(rs, stmt, conn);
		}
	}

}


————————jdbc.properties————————

driverClass=com.mysql.cj.jdbc.Driver

url=jdbc:mysql://localhost:3306/jdbctest1?serverTimezone=Hongkong

username=root

password=123456


写回答

1回答

好帮手慕阿莹

2020-04-24

同学你好,同学写的不错哦,

老师有个小建议,JDBCUtils作为一个工具类,不建议放业务代码在里边,使其更加的纯粹

建议把searchInfo()中的代码从JDBCUtils中移除出去,使其只负责获取,关闭连接等会更好。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 8016 问题

查看课程

相似问题