JDBDUitl代码记录

本文介绍使用JDBC访问MySQL数据库的方法。先准备数据库表,添加mysql5.1.7的JDBC的jar包到Java工程,新建jdbc.properties属性文件,再创建JDBCUtil类实现数据库连接。最后通过Junit单元测试完成数据库的增删改查操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用jdbc访问数据库

JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API。了解更多访问这里。
下面就直接开始吧。

1.准备数据库表

我用的是mysql 准备下面一张表:
employee表
在这里插入图片描述
就该表在java里用jdbc实现增删该查

2.准备jdbc的jar包jdbc jar包并添加到工程中,这里用的是mysql5.1.7的jar包。

3.新建一个java工程。

4.新建一个jdbc.properties属性文件放到根src目录下

这里访问本机数据库
内容如下:
在这里插入图片描述
url = jdbc:mysql://localhost/mydb1?characterEncoding=utf-8 表示数据库的访问地址是本机的mydb1的数据库 字符集为utf-8。
下依此是用户名、密码、和需要注册的驱动名字,=号左边是变量名 右边是值,不需要引号,待会儿JDBCUtil工具类会在这个文件中读取这些值。

5.新建一个JDBCUtil类

  • JDBCUtil类用来实现读取上面jdbc.properties文件中的值并 注册jdbc驱动和实现数据库的连接。
  • 源代码:
//代码如下,导入包时注意用import java.sql包,并非import java.sql.jdbc
public class JDBCUtil {
	// properties 文件里的driverClass
	static String driverClass = null;
	//数据库连接对象类,用它来表示工程和数据库的连接
	static Connection conn = null;
	/*语句对象,用它来执行sql语句,此处用的是Statement对象,该对象有sql注入的漏洞,建议用PreparedStatement*/
	static Statement st = null;
	//执行语句时返回的结果集
	static ResultSet rs = null;
	static String userName = null;
	static String url = null;
	static String passWord = null ;
	//在静态代码快中读取properties文件里的值
	static {
		
		try {
			Properties properties = new Properties();
			
			InputStream  is =JDCCUtil.class.getClassLoader().
					getResourceAsStream("jdbc.properties");
			properties.load(is);
			//读属性
		userName = properties.getProperty("userName");		
		url = properties.getProperty("url");
		passWord = properties.getProperty("passWord");
		driverClass = properties.getProperty("driverClass");
		System.out.println(url);
			
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
	
	//注册驱动 并返回获取连接并返回
	public static Connection getConn() {
		
		
		try {
		
			//DriverManager.registerDriver(new Driver());
			//使用Class的forName方法来注册驱动
			Class.forName(driverClass);
			/* Driver 的构造方法中有一个静态代码块 已经执行了 :DriverManager.registerDriver(new Driver());
			 * 所以用new Driver也可以
			 * */
			//new Driver();
			//建立连接 参数1 书库据的连接,参数2 用户名 3 密码
  conn   =	 DriverManager.getConnection(url, userName, passWord);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("类没找到");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			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);
		}
	//	释放Statement
	private static void closeSt(Statement st) {
		// TODO Auto-generated method stub
		try {
			if(st != null) {
				st.close();
				
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

//释放结果集
	private static void closeRs(ResultSet rs) {
		 try {
			 if(rs != null)
			
			 rs.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			rs = null;
		}
		 
	}
	
	//释放Connection
	private static void closeConn(Connection conn) {

		try {
			 if(conn != null)
			
			 conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
		conn = null;
		}
		
		
	}
}

好了东西都准备好了,下面可以进行数据库的增删改查了

  • 在main方法或者Junit单元测试里面进行增删改查
    我就在Junit里面进行单元测试。
    查询测试:
/*
* 使用Junit测试代码
*/
public class test {
   
   @Test 
   public void quareyTest() {
   	Connection conn = null;
   	Statement st = null;
   	ResultSet rs = null;
   	//1.获取查询对象
   	 conn = JCBCUtil.getConn();
   	try {
   		//获取statement对象
   		 st = conn.createStatement();
   		 String sql = "select * from employee";
   		 rs = st.executeQuery(sql);
   		 while(rs.next()) {
   			 int id = rs.getInt("id");
   			 String name = rs.getString("name");
   			 String password = rs.getString("password");
   			 String realname = rs.getString("realname");
   			//在控制台输出表里的信息
   			 System.out.println("id:"+id+"密码:"+password+"真实名字:"+realname);
   		 }
   	} catch (SQLException e) {
   		// TODO Auto-generated catch block
   		e.printStackTrace();
   	}finally {
   	//调用JDBCUtil.release(conn, st, rs)方法释放资源 该方法在JDBCUtil里面实现了
   		JDBCUtil.release(conn, st, rs);
   			}
   	}

运行结果:
在这里插入图片描述
删除测试:

@Test
   //删除测试
   public void deleteTest() {

   	Connection conn = null;
   	Statement st = null;
   	ResultSet rs = null;
   	//1.获取连接对象
   	 conn = JCBCUtil.getConn();
   	try {
   		 st = conn.createStatement();
   		 //删除id==3的数据
   		 String sql = "delete from employee where id=3";
   		 //删除,插入,更新都是用statement的executeUpdate(String sql)方法,返回int类型
   		 int result = st.executeUpdate(sql);
   		if(result>0) {
   			System.out.println("删除成功");
   			
   		}else {
   			System.out.println("删除失败");
   			
   		}
   		
   	} catch (SQLException e) {
   		// TODO Auto-generated catch block
   		e.printStackTrace();
   	}finally {
   		JCBCUtil.release(conn, st);
   	}
   	}

结果:
在这里插入图片描述
在数据库里查看一下是否已经删除:
在这里插入图片描述
我们看到id==3的数据已经被删除了。

实现插入:

//执行插入语
   @Test
    public void insertTest() {

   	Connection conn = null;
   	Statement st = null;
   	ResultSet rs = null;
   	
   	try {
   		conn = JCBCUtil.getConn();
   		st = conn.createStatement();
   		
   		String sql = "insert into employee values(null,'水煮肉片',333,'王大米')";
   		
   		int result = st.executeUpdate(sql);
   		if(result >0) {
   			System.out.println("插入成功");				
   		}else {
   			System.out.println("插入失败");
   		}

   	} catch (SQLException e) {
   		// TODO Auto-generated catch block
   		e.printStackTrace();
   	}finally {
   		JCBCUtil.release(conn, st);
   	}
   		
   }

查看一下结果:
在这里插入图片描述
在这里插入图片描述
已经插入成功了!

数据的更新:

@Test
	 public void updateTest() {

		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		
		try {
			conn = JCBCUtil.getConn();
			st = conn.createStatement();
			
			String sql = "update employee set realname ='王米米' where id = 6";
			
			int result = st.executeUpdate(sql);
			if(result >0) {
				System.out.println("更新成功");				
			}else {
				System.out.println("更新失败");
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			JCBCUtil.release(conn, st);
		}
		
		
	}

结果:
在这里插入图片描述
在这里插入图片描述
结果显示已经更新完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值