JDBC:MySQL——CRUD and select

以下也就是在Java中连接数据库对其进行操作:

CRUD是最常见的数据库操作,即增删改查
C 增加(Create)
R 读取查询(Retrieve)
U 更新(Update)
D 删除(Delete)

四者都挺相似的 只是传递不同的sql语句

select查询语句和CRUD不一样 需要返回数据 较为复杂
CRUD的操作都可以在MySQL中进行刷新以此验证

以下在Java中均是字符串的形式:

1、增加:
insert into 表名 values();
2、删除
delete from hero where …
3、修改
update hero set 字段名 = ‘’ where …

它们都是s.execute(); 方法来传递

以上可以直接写成一个类方法来调用 不用每次都class.forname然后try catch 之后的连接 陈述——statement
代码示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.Scanner;


public class JDBCtest {
	public static void main(String[] args) {
		Scanner scan =new Scanner(System.in);
		String st="";
		System.out.println("请输入sql语句:");
	    st=scan.nextLine();
	    JDBCtest.execute(st);
	}
	public static void execute(String str)
	{
		try {
			Class.forName("com.mysql.jdbc.Driver");
		}catch(ClassNotFoundException s)
		{
			s.printStackTrace();
		}

		try(
				Connection c=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root","admin");
				Statement s=c.createStatement();
				)
		{
				ResultSet rs=s.executeQuery(str);
				
				while(rs.next()) {
					int id=rs.getInt(1);
					String name=rs.getString(2);
					float hp=rs.getFloat(3);
					int damage=rs.getInt(4);
					System.out.printf("%d\t%s\t%f\t%d\t\n",id,name,hp,damage);
				}
		}catch(SQLException e)
		{
			e.printStackTrace();
		}
	}
}

查询 select不同:
以上的代码包含查询的内容——executeQuery——主要的查询调用方法
将字符串形式的sql语句传递 配和该方法返回的ResultSet接口类型,(ResultSet为结果集)进行数据返回:

while(rs.next()) {
					int id=rs.getInt(1);
					String name=rs.getString(2);
					float hp=rs.getFloat(3);
					int damage=rs.getInt(4);
					System.out.printf("%d\t%s\t%f\t%d\t\n",id,name,hp,damage);
				}

判断输入内容是否正确也可以由 if else语句
if(rs.next())
System.out.println(“right”);

执行的sql语句为

select count(*) from hero

获取总数

注意while语句写在if(rs.next())里面会引起某些查找不执行
在这里插入图片描述
比如这种 当while语块在if(rs.next())语块中的时候

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生管理系统是一个比较典型的CRUD应用,我们可以使用JSP + JDBC + MySQL来实现。 首先,我们需要创建一个数据库,包含学生信息的表。可以创建一个名为`student`的表,包含以下字段: ``` id int(11) NOT NULL AUTO_INCREMENT, name varchar(50) NOT NULL, age int(11) NOT NULL, gender varchar(10) NOT NULL, phone varchar(20) DEFAULT NULL, address varchar(100) DEFAULT NULL, PRIMARY KEY (id) ``` 接下来,我们需要创建一个JDBC连接池,以便在应用中共享数据库连接。可以使用Tomcat自带的连接池,或者使用第三方的连接池库。这里我们使用Tomcat自带的连接池。 在`context.xml`文件中添加以下内容: ``` <Context> <Resource name="jdbc/student" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="数据库用户名" password="数据库密码" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8"/> </Context> ``` 在`web.xml`文件中添加以下内容: ``` <resource-ref> <description>Connection pool for MySQL</description> <res-ref-name>jdbc/student</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ``` 然后,我们可以编写一个JavaBean来代表学生对象。在`Student.java`文件中添加以下内容: ```java public class Student { private int id; private String name; private int age; private String gender; private String phone; private String address; // 省略getter和setter方法 } ``` 接下来,我们可以编写一个DAO类来访问数据库。在`StudentDAO.java`文件中添加以下内容: ```java public class StudentDAO { private DataSource dataSource; public StudentDAO() throws NamingException { Context context = new InitialContext(); dataSource = (DataSource) context.lookup("java:comp/env/jdbc/student"); } public List<Student> getAllStudents() throws SQLException { List<Student> students = new ArrayList<>(); try (Connection conn = dataSource.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM student")) { while (rs.next()) { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); student.setGender(rs.getString("gender")); student.setPhone(rs.getString("phone")); student.setAddress(rs.getString("address")); students.add(student); } } return students; } public Student getStudentById(int id) throws SQLException { try (Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.prepareStatement("SELECT * FROM student WHERE id=?")) { stmt.setInt(1, id); try (ResultSet rs = stmt.executeQuery()) { if (rs.next()) { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); student.setGender(rs.getString("gender")); student.setPhone(rs.getString("phone")); student.setAddress(rs.getString("address")); return student; } } } return null; } public void addStudent(Student student) throws SQLException { try (Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.prepareStatement( "INSERT INTO student (name, age, gender, phone, address) VALUES (?, ?, ?, ?, ?)")) { stmt.setString(1, student.getName()); stmt.setInt(2, student.getAge()); stmt.setString(3, student.getGender()); stmt.setString(4, student.getPhone()); stmt.setString(5, student.getAddress()); stmt.executeUpdate(); } } public void updateStudent(Student student) throws SQLException { try (Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.prepareStatement( "UPDATE student SET name=?, age=?, gender=?, phone=?, address=? WHERE id=?")) { stmt.setString(1, student.getName()); stmt.setInt(2, student.getAge()); stmt.setString(3, student.getGender()); stmt.setString(4, student.getPhone()); stmt.setString(5, student.getAddress()); stmt.setInt(6, student.getId()); stmt.executeUpdate(); } } public void deleteStudent(int id) throws SQLException { try (Connection conn = dataSource.getConnection(); PreparedStatement stmt = conn.prepareStatement("DELETE FROM student WHERE id=?")) { stmt.setInt(1, id); stmt.executeUpdate(); } } } ``` 最后,我们可以编写一个JSP页面来展示学生信息。在`index.jsp`文件中添加以下内容: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.List" %> <%@ page import="javax.naming.NamingException" %> <%@ page import="com.example.StudentDAO" %> <%@ page import="com.example.Student" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>学生管理系统</title> </head> <body> <h1>学生列表</h1> <table border="1"> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>电话</th> <th>地址</th> <th></th> </tr> <% StudentDAO dao = null; try { dao = new StudentDAO(); List<Student> students = dao.getAllStudents(); for (Student student : students) { %> <tr> <td><%= student.getId() %></td> <td><%= student.getName() %></td> <td><%= student.getAge() %></td> <td><%= student.getGender() %></td> <td><%= student.getPhone() %></td> <td><%= student.getAddress() %></td> <td> <a href="edit.jsp?id=<%= student.getId() %>">编辑</a> <a href="delete.jsp?id=<%= student.getId() %>" onclick="return confirm('确定删除?')">删除</a> </td> </tr> <% } } catch (SQLException e) { e.printStackTrace(); } catch (NamingException e) { e.printStackTrace(); } finally { if (dao != null) { dao.close(); } } %> </table> <p><a href="add.jsp">添加学生</a></p> </body> </html> ``` 在`edit.jsp`文件中,我们可以使用同样的方式显示学生信息,并提供一个表单来编辑学生信息。在提交表单时,我们可以使用`StudentDAO`类来更新学生信息。 在`add.jsp`文件中,我们可以提供一个表单来添加新的学生信息。在提交表单时,我们可以使用`StudentDAO`类来插入新的学生信息。 在`delete.jsp`文件中,我们可以使用`StudentDAO`类来删除学生信息。 至此,我们已经完成了一个简单的学生管理系统的实现。注意,在实际应用中,我们需要进行一些安全性和可靠性的考虑,例如输入验证、异常处理、事务管理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值