jsp 页面实现界面数据库的交互

我使用的数据库是mysql,其余数据库方法大致一致,细节注意下即可。

今天主要分享的是单个jsp页面如何实现和数据库的交互,包括 增删查改 四个方面。

首先我在dos界面建立了一个数据库

初始化界面是这样的

之后进行代码编写

此处给出全部代码,之后分块解释

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SQLTest</title>
</head>
<body>
<%
	Connection con;
	Statement st;
	ResultSet rs;
	PreparedStatement stmt;
	try{
		Class.forName("com.mysql.cj.jdbc.Driver");//获取数据库连对象
	}catch(Exception e){
		out.println("忘记把mySQL数据库的jdbc数据库驱动程序复制到jdk的扩展目录中 ");
	}
	
	try{
		String url="jdbc:mysql://localhost/student?serverTimezone=GMT%2B8&useSSL=false"; //数据库连接字
		String name="root";
		String pass="123456";
		con = DriverManager.getConnection(url,name,pass);//加载并注册驱动程序
		st = con.createStatement();//statement对象的初始化
		
		//增加一行记录无参
/* 	 	String sql = "insert into rj1602(Sno,Sname,Snicheng,Scondition,java,os,math) values (?,?,?,?,?,?,?)";
		stmt = con.prepareStatement(sql);
		stmt.setString(1,"201616040221");
		stmt.setString(2,"小宝");
		stmt.setString(3,"小白");
		stmt.setString(4,"天真的");
		stmt.setInt(5,45);
		stmt.setInt(6,45);
		stmt.setInt(7,54);
		int n = stmt.executeUpdate();  
		rs = st.executeQuery("select * from rj1602"); */
		
		//增加一行记录有参数
/*  	String sql = "insert into rj1602(Sno,Sname,Snicheng,Scondition,java,os,math) values ('201616040220','小胖子','胖子','真胖',49,48,94)";
		stmt = con.prepareStatement(sql);
		rs = st.executeQuery("select * from rj1602"); */
		
		//删除一行记录无参数
/*  	String sql = "delete from rj1602 where Sno=?";
		stmt = con.prepareStatement(sql);
		stmt.setString(1, "201616040219");
		int n = stmt.executeUpdate();
		rs = st.executeQuery("select * from rj1602"); */
		
		//删除一行记录有参数
/*  		String sql = "delete from rj1602 where Sno='201616040221'";
		stmt = con.prepareStatement(sql);
		int n = stmt.executeUpdate();  
		rs = st.executeQuery("select * from rj1602");  */
		
 		//查询数据
/* 		String sql = "select * from rj1602 where Sno='201616040214'";
		stmt = con.prepareStatement(sql);//先实例化stmt对象,之后再执行sql语句
		rs = stmt.executeQuery(sql);
		 */
		 
		//修改某个数据
/*   	String sql = "update rj1602 set Sname='小宝贝' where Sno = '201616040221'";
		stmt = con.prepareStatement(sql);
		int n  = stmt.executeUpdate(sql);  //executeUpdate返回一个整形
		rs = st.executeQuery("select * from rj1602"); //executeQuery返回一个结果集 */
		 
		
		//输出数据库表格
		out.print("<table border=2>");
		out.print("<tr>");
		out.print("<th width = 100>"+"Sno");
		out.print("<th width = 100>"+"Sname");
		out.print("<th width = 100>"+"Snicheng");
		out.print("<th width = 100>"+"Scondition");
		out.print("<th width = 100>"+"java");
		out.print("<th width = 100>"+"os");
		out.print("<th width = 100>"+"math");
		out.print("</tr>");
		
		while(rs.next()){
			out.print("<tr>");
				out.print("<td>"+rs.getString(1)+"</td>");
				out.print("<td>"+rs.getString(2)+"</td>");
				out.print("<td>"+rs.getString(3)+"</td>");
				out.print("<td>"+rs.getString(4)+"</td>");
				out.print("<td>"+rs.getInt("java")+"</td>");
				out.print("<td>"+rs.getInt("os")+"</td>");
				out.print("<td>"+rs.getInt("math")+"</td>");
			out.print("</tr>");
		}
		out.print("</table>"); 
		con.close();
	}catch(SQLException e){
		out.print(e);
	}
%>
</body>
</html>

使用eclipse读取数据库表格的初始化表格如下

首先建立Connection,Statement,PreparedStatement,Resultset对象

Connection:数据库连接接口,该接口负责与特定数据库的链接,其中三个方法比较重要

  1. createStatement():创建并返回一个Statement实例,通常在执行无参数的sql语句时创建该实例。
  2. prepareStatement():创建并返回一个Statement实例,通常在执行含参数的sql语句时创建该实例。
  3. close():关闭数据库连接。

Statement:该接口用来执行静态的sql语句,并返回执行结果。

  1. executeQuery(String sql):执行静态的select语句,并返回一个永远不能为null的Result实例。
  2. executeUpdate(String sql):执行静态的insert,update,delete语句,并返回一个int型整数,为同步更新记录的条数。
  3. close():关闭Statement实例。

PreparedStatement:该接口继承与于Statement接口,用来执行动态的sql语句。

  1. executeQuery(String sql):执行前面包含参数的动态select语句,并返回一个永远不能为null的Result实例。
  2. executeUpdate(String sql):执行前面包含参数的动态的insert,update,delete语句,并返回一个int型整数,为同步更新记录的条数。
  3. setXXX():设置指定类型的参数值,下方会有具体代码演示。
  4. close():关闭Statement实例。

Result:该接口类似于一个数据表,通过该接口的实例可以获得检索结果集,以及对应数据表的相关信息。

其中具体方法可参考:https://blog.csdn.net/CSDN___LYY/article/details/53223844

实例化之后,获取数据库连接对象

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

加载并注册驱动程序

String url="jdbc:mysql://localhost/student?serverTimezone=GMT%2B8&useSSL=false"; //数据库连接字
String name="root";
String pass="123456";
con = DriverManager.getConnection(url,name,pass);//加载并注册驱动程序

增加一行记录,无参数的

//增加一行记录无参
String sql = "insert into rj1602(Sno,Sname,Snicheng,Scondition,java,os,math) values(?,?,?,?,?,?,?)";
stmt = con.prepareStatement(sql);
stmt.setString(1,"201616040221");
stmt.setString(2,"小宝");
stmt.setString(3,"小白");
stmt.setString(4,"天真的");
stmt.setInt(5,45);
stmt.setInt(6,45);
stmt.setInt(7,54);
int n = stmt.executeUpdate();  
rs = st.executeQuery("select * from rj1602"); 

此处通过?????来进行sql语句的填写,并通过prepareStatement接口的set方法存入值,编号从1递加并第一个?开始。

执行结束后,eclipse返回结果

 

查询数据

 		//查询数据
 		String sql = "select * from rj1602 where Sno='201616040214'";
		stmt = con.prepareStatement(sql);//先实例化stmt对象,之后再执行sql语句
		rs = stmt.executeQuery(sql);

修改数据

		//修改某个数据
   		String sql = "update rj1602 set Sname='小宝贝' where Sno = '201616040221'";
		stmt = con.prepareStatement(sql);
		int n  = stmt.executeUpdate(sql);  //executeUpdate返回一个整形
		rs = st.executeQuery("select * from rj1602"); //executeQuery返回一个结果集 */

删除201616040221这条记录有参的,无参同增加

		//删除一行记录有参数
  		String sql = "delete from rj1602 where Sno='201616040221'";
		stmt = con.prepareStatement(sql);
		int n = stmt.executeUpdate();  
		rs = st.executeQuery("select * from rj1602");  

虽然很简单,但是对于新手还是需要一番时间进行探索的。

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值