JavaWeb开发之JDBC

项目搭建的包命名和类命名:

首先导入数据库的驱动架包,并添加依赖

1.Dao层是专门负责和数据库交互,数据处理的代码层

2.Dao是接口,DaoImpl是Dao接口的实现类

3.Java代码连接数据库的步骤:“贾琏欲执事”口诀

  (1)贾:加载数据库注册驱动,将数据库驱动注册到DriverManager中去。

    Class.forName("com.mysql.jdbc.Driver");

  (2)琏:创建连接数据库的对象,通过DriverManager获取

  Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "123456");

  (3)欲:创建预编译或非预编译 SQL语句对象

  String sql="update t_student set name = ?,age = ? where id = ?";

  PrepardStatment ps =conn.preparedStatment(sql);

  ps.setString(1,"小明");

  ps.setInt(2,20);

  ps.setInt(3,2);

  (4)执:执行SQL语句

  int row =ps.executeUpdate();

  (5)事:释放资源(先创后放)

  conn.close();

  ps.close();

 

具体代码:

	@Override
	public int insert(Student stu) {

		String sql = "insert into t_student(name,age)values(?,?)";
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			// 1.加载注册驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
			// 3.创建预编译语句对象
			ps = conn.prepareStatement(sql);

			// 3.1设置预编译语句对象占位符对应的参数值
			ps.setString(1, stu.getName());
			ps.setInt(2, stu.getAge());
			// 4.执行SQL语句 (注意:方法不能带sql参数)
			int row = ps.executeUpdate();
			return row;

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null) {
					ps.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		return 0;
	}

	@Override
	public int delete(Integer id) {
		String sql = "delete from t_student where id = ?";
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			// 1.加载注册驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
			// 3.创建预编译语句对象
			ps = conn.prepareStatement(sql);

			// 3.1设置预编译语句对象占位符对应的参数值
			ps.setInt(1, id);
			// 4.执行SQL语句 (注意:方法不能带sql参数)
			int row = ps.executeUpdate();
			return row;

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null) {
					ps.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		return 0;
	}

	@Override
	public int update(Student stu) {
		String sql = "update t_student set name = ?,age = ? where id = ?";
		Connection conn = null;
		PreparedStatement ps = null;
		try {
			// 1.加载注册驱动
			Class.forName("com.mysql.jdbc.Driver");

			// 2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
			// 3.创建预编译语句对象
			ps = conn.prepareStatement(sql);

			// 3.1设置预编译语句对象占位符对应的参数值
			ps.setString(1, stu.getName());
			ps.setInt(2, stu.getAge());
			ps.setInt(3, stu.getId());
			// 4.执行SQL语句 (注意:方法不能带sql参数)
			int row = ps.executeUpdate();
			return row;

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null) {
					ps.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (conn != null) {
						conn.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		return 0;
	}

	@Override
	public Student selectByPrimaryKey(Integer id) {

		String sql = "select * from t_student where id = ?";

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			// 1.加载注册驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
			// 3.创建预编译语句对象
			ps = conn.prepareStatement(sql);
			ps.setInt(1, id);
			// 4.执行sql语句
			rs = ps.executeQuery();

			while (rs.next()) {
				String name = rs.getString("name");
				int age = rs.getInt("age");

				// 封装Student对象
				Student stu = new Student(id, name, age);
				//返回Student对象
				return stu;
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (ps != null) {
						ps.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
				} finally {
					try {
						if (conn != null) {
							conn.close();
						}
					} catch (SQLException e) {
						e.printStackTrace();
					}
				}
			}
		}
		return null;
	}

	@Override
	public List<Student> selectList() {

		List<Student> students = new ArrayList<>();

		String sql = "select * from t_student";

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			// 1.加载注册驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root");
			// 3.创建预编译语句对象
			ps = conn.prepareStatement(sql);

			// 4.执行sql语句
			rs = ps.executeQuery();

			while (rs.next()) {
				int id = rs.getInt("id");
				String name = rs.getString("name");
				int age = rs.getInt("age");

				// 封装Student对象
				Student stu = new Student(id, name, age);

				// 学生对象添加到集合中
				students.add(stu);
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (rs != null) {
					rs.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				try {
					if (ps != null) {
						ps.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
				} finally {
					try {
						if (conn != null) {
							conn.close();
						}
					} catch (SQLException e) {
						e.printStackTrace();
					}
				}
			}
		}

		return students;
	}

  

  

  

原文地址:https://www.cnblogs.com/luojack/p/10888303.html

时间: 2024-07-30 11:23:15

JavaWeb开发之JDBC的相关文章

JAVAWEB开发之Hibernate详解(一)——Hibernate的框架概述、开发流程、CURD操作和核心配置与API以及Hibernate日志的使用

Hibernate框架概述 什么是Hibernate? 框架:软件的半成品,完成部分代码的功能. Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思想来操作数据库.Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序中使用,也可以在Servlet/JSP的web应用程序中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成

JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的JavaSE/EE full-stack(一站式)轻量级开源框架. 所谓分层: SUN提供的EE的三层结构:web层.业务层.数据访问层(也称持久层,集成层). Struts2是web层基于MVC设计模式框架. Hibernate是持久的一个ORM的框架. 所谓一站式:Spring框架有对三层的每层解决方案.

JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解

Servlet的缺点 开发人员要十分熟悉JAVA 不利于页面调试和维护(修改,重新编译) 很难利用网页设计工具进行页面设计(HTML内容导入到servlet中,用PrintWriter的对象进行输出) JSP简介 JSP(Java Server Pages) 与Java Servlet一样,是在服务器端执行的,不同的是JSP先由服务器编译部署成Servlet执行. JSP技术的企业最佳实践(生成HTML内容) 新的JSP2.0规范版本包括新的功能(EL表达式,新增的Simple Tag和Tag

JAVAWEB开发之JSTL标签库的使用、 自己定义EL函数、自己定义标签(带属性的、带标签体的)

JSTL JSTL简单介绍: JSTL的全称:JSP Standard Tag Library.JSP标准标签库 JSTL的作用: 提供给Java Web开发者一个标准通用的标签函数库 和EL来代替传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序可读性.维护性和方便性 JSTL的版本号: JSTL的主要版本号是1.0.1.1和1.2(差别不大) 1.0版本号EL表达式还没有纳入官方规范 1.1和1.2版本号EL表达式已经纳入了官方规范 JSTL1.1 下载对应的jar包

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

JAVAWEB开发之Maven的入门详解——Maven的安装以及项目的结构和Maven的使用以及私服的搭建与配置

什么是Maven? 翻译为专家,内行.Maven是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,项目管理和项目信息管理.那么怎么样才算是理想的项目构建呢?理想的项目构建就是必须具备高度自动化,跨平台,可重用的组件,标准化这些特性. 什么是依赖?为什么要进行依赖管理? - 所谓的依赖就是自动下载.进行依赖管理主要是为了统一的对这些依赖进行管理. 都有哪些项目信息? -项目名称描述,开发者信息,开发人员信息,项目的版本号等等. 什么项目构建? - 所谓的项目构建就是对项目进行清理.编译

Jmeter常用脚本开发之JDBC请求

简单说明:JDBC请求就是使用Jmeter连接数据库,执行sql语句,并返回对应的响应结果 步骤: 1.引入使用的数据库的驱动jar包,使用不同的数据库,我们需要引入不同的jar包.本文使用的MySQL,引入mysql-connector-java-3.0.17-ga-bin.jar 引入方法:直接将jar包复制到jmeter的lib\ext目录 2.创建测试计划,添加数据库配置元件,配置数据库连接信息,如图 JDBC Driver class的填写,不同数据库的填写方式,可以参考以下表格 Da

WEB开发之JDBC的使用

1.JDBC 技术访问数据库 在动态的WEB开发中,肯定会用到数据库,因为动态 WEB实现主要是实现了与用户的交互,而交互性的实现由主要是借助于我们的数据库,与数据库连接主要是进行 CRUD(create,read,update,delete)操作.CRUD 操作是由SQL 语句完成的. 回顾 一下SQL 语句基本格式吧: Create: insert into 表名(字段 1,字段 2,……,字段 n) values(值 1,值 2,……,值 n)         例:insert into

JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用

Session的追踪技术 已知Session是利用cookie机制的服务器端技术,当客户端第一次访问资源时 如果调用request.getSession() 就会在服务器端创建一个由浏览器独享的session空间,并分配一个唯一且名称为JSESSIONID的cookie发送到浏览器端,如果浏览器没有禁用cookie的话,当浏览器再次访问项目中的Servlet程序时会将JSESSIONID带着,这时JSESSIONID就像唯一的一把钥匙  开启服务器端对应的session空间,进而获取到sessi