使用JDBC操作数据库

本文介绍了JDBC(Java Database Connectivity)的基本使用,包括加载数据库驱动、建立连接、执行SQL语句以及关闭资源。讨论了prepareStatement与creatStatement的区别,前者预编译提高效率,适合批量操作,后者适用于一次性操作。并提供了一个完整的JDBC操作数据库的示例。
摘要由CSDN通过智能技术生成

JDBC是Java数据库连接(Java Database Connectivity)的简称,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了查询和更新数据库数据的方法。

JDBC的使用

1、根据数据库不同导入相应jar包。这里用到的数据库是MySQL,版本为8.0.12,可以在MySQL官网下载对应版本的MySQL的jdbc驱动jar包,并导如的项目中。

在这里插入图片描述

2、加载驱动。使用Class.forName()方法加载MySQL连接驱动,在使用MySQL 5及之前的数据库和数据库连接时需要使用“com.mysql.jdbc.Driver”进行加载,使用的是MySQL 6及之后的数据库和数据库连接时就需要使用“com.mysql.cj.jdbc.Driver”进行加载。

在这里插入图片描述

3、根据数据参数(url、username、password)来获取数据库连接。url中的mysql的默认端口号为3306,并且在MySQL 8.0以上的数据库的url后面需要加上“?useSSL=false&serverTimezone=UTC”,指明是否进行SSL连接和指定时区

在这里插入图片描述
在这里插入图片描述

4、创建需要执行的sql命令。

在这里插入图片描述

5、执行sql命令,获取结果集。

在这里插入图片描述

6、遍历查询结果。

在这里插入图片描述

7、关闭资源。

在这里插入图片描述

prepareStatement与creatStatement

在执行sql语句的时候可以选择是使用prepareStatement执行sql语句还是使用createStatement的方式执行sql语句。

在这里插入图片描述

1、preparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程。

preparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经被预编译过,因而当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,preparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度。但是preparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。

2、Statement不会初始化,没有预处理,每次都是从0开始执行SQL。在对数据库只执行一次性存取的时侯,适合用 Statement 对象进行处理。

3、preparedStatement可以使用占位符“?”进行参数赋值,createStatement只能使用字符串拼接的方式进行参数赋值。

完整示例

实体类Emp:

package com.jdbcDemo;

import java.util.Date;

public class Emp {
   
	private int empno;
	private String ename;
	private String job;
	private int mgr;
	private Date date;
	private double sal;
	private double comm;
	private int deptno;
	public int getEmpno() {
   
		return empno;
	}
	public void setEmpno(int empno) {
   
		this.empno = empno;
	}
	public String getEname() {
   
		return ename;
	}
	public void setEname(String ename) {
   
		this.ename = ename;
	}
	public String getJob() {
   
		return job;
	}
	public void setJob(String job) {
   
		this.job = job;
	}
	public int getMgr() {
   
		return mgr;
	}
	public void setMgr(int mgr) {
   
		this.mgr = mgr;
	}
	public Date getDate() {
   
		return date;
	}
	public void setDate(Date date) {
   
		this.date = date;
	}
	public double getSal() {
   
		return sal;
	}
	public void setSal(double sal) {
   
		this.sal = sal;
	}
	public double getComm() {
   
		return comm;
	}
	public void setComm(double comm) {
   
		this.comm = comm;
	}
	public int getDeptno() {
   
		return deptno;
	}
	public void setDeptno(int deptno) {
   
		this.deptno = deptno;
	}
	@Override
	public String toString() {
   
		return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + ", date=" + date
				+ ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + "]";
	}
	@Override
	public int hashCode() {
   
		final int prime = 31;
		int result = 1;
		long temp;
		temp = Double
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值