jdbc连接数据库

本文主要介绍了JDBC连接数据库的相关内容。阐述了数据库、后台和前台的作用,介绍了驱动包组成。详细说明了JDBC连接数据库的步骤,列举了相关关键词。还讲解了JDBC增删改查操作,提及乱码问题的解决办法,最后总结了增删改查的异同点。

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

jdbc连接数据库

1.概念
  • 数据库是用于管理数据的,后台是用于根据业务做逻辑处理的,前台显示数据并进行交互

  • 驱动包:DriverManager(驱动管理-注册驱动)、Statement(编译及执行SQL语句)、ResultSet(处理结果集)

2.步骤:

1、关联数据库驱动包(不同的数据库使用的驱动包是不一样的)

2、注册驱动(通过反射进行驱动的注册)

3、连接数据库获取数据库连接对象(登录-选择数据库的过程)

4、执行SQL语句

5、处理结果集

6、关闭数据库连接对象

3.关键词:

关键词:DriverManager(管理JDBC驱动)、Statement(用于SQL的编译及执行)/PreparedStatement(预编译)/CallableStatement(执行存储过程)、ResultSet(结果集)

4. JDBC增删改查

如果在执行修改动作时出现乱码,是因为开发工具的编码与数据库中的编码不一致导致的,数据库的编码大多数为UTF-8,所以在连接的地址上去设置编码即可,针对5.1及8.0的版本不同,设置编码的方式为:

8.0:jdbc:mysql://localhost:3306/tongbai?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
5.1:jdbc:mysql://localhost:3306/tongbai?characterEncoding=UTF-8
	private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
	private static final String URL = "jdbc:mysql://localhost:3306/tongbaishan?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
	private static final String USER = "root";
	private static final String PASSWORD = "root";
	
	public static void main(String[] args) {
		String sql = "update emp set ename='马飞飞' where eno=1";
		int result = DBUtil.curdMethod(sql);
		System.out.println(result);
	}
	
	/**
	 * 删除
	 */
	public static void delete() {
		Connection conn = null;
		Statement statement = null;
		try {
			Class.forName(DRIVER);
			conn = DriverManager.getConnection(URL,USER,PASSWORD);
			String sql = "delete from emp where eno=14";
			statement = conn.createStatement();
			int result = statement.executeUpdate(sql);
			System.out.println(result);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(statement != null) {
					statement.close();
				}
				if(conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 修改
	 */
	public static void update() {
		Connection conn = null;
		Statement statement = null;
		try {
			Class.forName(DRIVER);
			conn = DriverManager.getConnection(URL,USER,PASSWORD);
			String sql = "update emp set ename='马飞' where eno=1";
			statement = conn.createStatement();
			int result = statement.executeUpdate(sql);
			System.out.println(result);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if(statement != null) {
					statement.close();
				}
				if(conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 添加数据
	 */
	public static void insert() {
		Connection conn = null;
		Statement statement = null;
		try {
			Class.forName(DRIVER);
			conn = DriverManager.getConnection(URL,USER,PASSWORD);
			String sql = "insert into emp values(8,'赵佳奇','男','1999-01-24','13496784687',40)";
			statement = conn.createStatement();
			int result = statement.executeUpdate(sql);
			System.out.println(result);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if(statement != null) {
					statement.close();
				}
				if(conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 查询功能
	 */
	public static void query() {
		Connection conn = null;
		Statement statement = null;
		ResultSet rs = null;
		try {
			//注册驱动
			Class.forName(DRIVER);
			//登录数据库获取连接对象
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			//定义SQL
			String sql = "select ename,eno,birthday,sex,phone,dno from emp limit 0,5";
			//执行SQL 需要Statement对象
			statement = conn.createStatement();
			//执行SQL获取结果集
			rs = statement.executeQuery(sql);
			//遍历结果集(查询的过程中,可能会出现查询结果为空)
			while(rs.next()) {//判断是否有下一个元素,每次循环都代表一行数据
				//获取元素一行中的列
				/*int eno = rs.getInt("eno");
				String ename = rs.getString("ename");
				String sex = rs.getString("sex");
				Date birthday = rs.getDate("birthday");
				String phone = rs.getString("phone");
				int dno = rs.getInt("dno");*/
				int eno = rs.getInt(2);
				String ename = rs.getString(1);
				String sex = rs.getString(4);
				Date birthday = rs.getDate(3);
				String phone = rs.getString(5);
				int dno = rs.getInt(6);
				System.out.println(eno+"--"+ename+"--"+sex+"--"+birthday+"--"+phone+"--"+dno);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			//关闭数据库连接对象
			try {
				if(rs != null) {
					rs.close();
				}
				if(statement != null) {
					statement.close();
				}
				if(conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}
5. 总结
  • 增删改查四个功能的相同点和不同点
  • 相同点:
  • 1、注册驱动
  • 2、连接数据库
  • 3、关闭数据库
  • 不同点:
  • 1、SQL语句不同
  • 2、结果集不同
  • 增删改的异同点
  • 相同:
  •  1、注册驱动
    
  •  2、连接数据库
    
  •  3、执行SQL方式
    
  •  4、关闭数据库
    
  • 不同点:
  •  1、SQL语句不同
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值