JDBC数据库

“感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友。您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!🚀✨”

Jdbc数据库

原生Java连接数据库

import java.sql.Connection;
import java.sql.DriverManager;

public class MysqlTest {
    public static void main(String[] args) {
        //不用动,默认就是这么写的
        String driverName = "com.mysql.cj.jdbc.Driver";
        //本地连接
        String dbURL = "jdbc:mysql://localhost:3306/mysql?&useSSL=false&serverTimezone=Asia/Shanghai"; //mysql为数据库名

        String userName = "root";
        //自己数据库的密码
        String userPwd = "000000";

        try {
            Class.forName(driverName);
            Connection con = DriverManager.getConnection(dbURL, userName, userPwd);
            System.out.println("连接数据库成功");

        } catch (Exception e) {
            e.printStackTrace();

            System.out.print("连接失败");
        }
    }
}

JSP可以写Java代码,可以通过Java代码来访问数据库,在Java技术中访问数据库的技术叫做JDBC,它提供了一系列API对数据进行添加 删除 修改 查询

查询数据操作

JDBC 提供的API可以将标准的SQL语句发送给数据库 实现和数据库的交互操作

创建Statement对象

建立和特定数据库的连接后,就可以用该连接发送SQL语句,Statement对象用Connection方法的

createStatement()创建;

有了 Connection 接口和数据库建立连接后,它返回的是一个连接的值,再通过这个值中的方法 createStatement 
创建 Statement 对象发送sql语句,有了c后用c去创建s

// 建立数据库连接,url为各个参数,用户名密码 // s
1.Connection conn = DriverManager.getConnection(url); 
2.Statement statement = conn.createStatement();  // 利用c的参数coon的方法创建s对象发送sql语句
3.String sql = "select * from xue";  // 随便写一条sql
4.rs = statement.executeQuery(sql);   //rs保存查询结果   executeQuery执行查询语句

ResultSet对象存储数据库取出的值

------------------------------------------------------

3 4 简化的代码,语句直接写在执行方法内

ResultSet rs = statement.executeQuery("SELECT  a,b,c from table2");


PreparedStatement preparedStatement = conn.prepareStatement(sql);



Statement对象是Java执行数据库操作的重要接口,用于已经建立数据库连接的基础上,发送SQL语句

Statement stmt = conn.createStatement();

实际有3种 Statement 对象 他们专门用于发送特定类型的SQL语句

Statement:对象用于执行不带参数简单的SQL语句
PreparedStatement: 对象用于执行带参数或不带参数的预编译SQL语句;
CallableStatement: 对象用于执行对数据库存储过程的调用

向数据库发送SQL语句

为了执行Statement对象,发送到数据库的SQL语句将参数提供给Statement方法

ResultSet rs = stmt.executeQuery("SELECT  a,b,c from table2");

处理查询结果

Statement对象可以调用对应的方法实现对数据库中表的查询和修改,并将查询结果存放在

ResultSet类声明的对象:

它是以统一形式的列组织的数据行组成,它实际上是一个小表格,存在游标,它是ResultSet中可以移动的一个指针,它指向一个数据,初始指向第一行的前一行,rs.next()可以将游标移到下一行,其返回值是一个布尔类型,如果下一次有数据返回值为true否则为false,所以必须运行一次next函数后,才能从新开始取数据,如果强行取数据则会找不到该页面而报错, 所以使用rs.next配合while对所有结果遍历并输出

关闭Statement对象

Statement对象将由Java垃圾收集程序自动关闭,应该不需要该对象显示地关闭它,这将立即释放DBMS资源,有助于避免潜在的内存问题

查询数据

配置文章已经发在CSDN简单的来说就是

  1. 下载JDBC驱动
  2. 驱动放置到Tomcatlib文件夹下(apache-tomcat-8.5.93\webapps\ROOT)这个路径是8080端口下
  3. JavaWeb项目正常配置,写入下方的代码进行连接
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.sql.*" %>

<head>
  <title>整表查询数据</title>
  
  <%! ResultSet rs;%>  <!--用于存储查询结果集-->
  <%
    String dbName = "study"; // 数据库名
    String userName = "root"; // 用户名
    String userPasswd = "000000"; //密码
    String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
    Class.forName("com.mysql.cj.jdbc.Driver");  // JDBC连接驱动
    Connection conn = DriverManager.getConnection(url); // 建立数据库连接
    Statement  statement  = conn.createStatement();  // 执行sql语句对象
    String sql = "select * from xue";  // 表名 xue
    rs = statement.executeQuery(sql);   //rs保存查询结果   executeQuery执行查询语句
  %>
</head>
<body>
<table border="1">
  <th colspan="4" style=" font-size: x-large; alignment: center"> 学生信息表</th>
  <tr style=" text-align: center">
    <td>姓名</td>
    <td>性别</td>
    <td>所班级</td>
  </tr>
  <% while (rs.next()) {  %>  <!--rs.next()配合while循环取出数据并放在页面中--->
  <tr style=" text-align: center">
    <!---rs.getString(1) 表示获取结果集中当前行的第一列的值。--->
    <td><%= rs.getString(1)  %></td>
    <td><%= rs.getString(2) %> </td>
    <td><%= rs.getString(3) %> </td>
    <td><%= rs.getString(3) %> </td> // 两个同样的会重复

  </tr>
  <%  }  %>
</table>
</body>
</html>

条件查询

where子句用于规定查询的条件,进行限制查询

SELECT  age FROM students WHERE age >= 18; // 查询students表中的age字段大于等于18的值

------

between:在某个范围内
like:搜索某种模式

index.JSP



<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<body>
<form action="fast.jsp"  method="post" > // 点击提交跳转到其他页面代码
  <table>
    <th colspan="2">查询条件</th>
    <tr>
      <td>学号:</td>
      <td><input type="text" name="stuid" id="stuid"/> </td>
    </tr>
    <tr aria-rowspan="2">
      <td><input type="submit" value="提交"></td>
    </tr>
  </table>
</form>
</body>
</html>

fast.JSP 存在数据库连接代码




<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.sql.*" %>

 <% String id = request.getParameter("stuid");%> 

<head>
    <title>整表查询数据</title>
    <%! ResultSet rs;%>  <!--用于存储查询结果集-->
    <%
        String dbName = "test1"; // 数据库名
        String userName = "root"; // 用户名
        String userPasswd = "000000"; //密码
        String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
        Class.forName("com.mysql.cj.jdbc.Driver");  // JDBC连接驱动
        Connection conn = DriverManager.getConnection(url); // 建立数据库连接
        Statement statement = conn.createStatement();  // 执行sql语句对象
        
        // 查询xsb表中的入学成绩字段,这个id是上文的另一个页面传递来的值,第7行写入
        
        String sql = "select * from xsb where rxcj ='" +id+"'" ; 
                
        rs = statement.executeQuery(sql);   //rs保存查询结果   executeQuery执行查询语句
    %>
</head>
<body>
<table border="1">
    <th colspan="4" style=" font-size: x-large; alignment: center"> 学生信息表</th>
    <tr style=" text-align: center">
        <td>学号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>出生日期</td>
        <td>专业</td>
        <td>成绩</td>
    </tr>
        <% while (rs.next()) {  %>
    <tr style=" text-align: center">
        <td><%= rs.getString(1)  %></td>
        <td><%= rs.getString(2) %> </td>
        <td><%= rs.getString(3)%></td>
        <td><%= rs.getString(4)%></td>
        <td><%= rs.getString(5)%></td>
        <td><%= rs.getString(6)%></td>
    </tr>
        <%  }  %>
</body>
</html>

and or逻辑过滤

需要进一步满足多个条件,and or对语句进行过滤

查询student表下name值等于软件2班 and(并且)  number输入的id 也要满足这个条件

String sql = "select * from student where name=软件2班 and number ='" +id+"'" ;
查询student表下name值等于软件2班 or(或者) 输入的 id值

String sql = select *from student where name=软件2班 or number ='" +id+"'" ;

排序查询

使用ORDER BY 语句对结果进行排序,默认采用升序进行排序,如果需要降序则使用DESC关键字

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.sql.*" %>
<% String id = request.getParameter("stuid");%>
<head>
    <title>整表查询数据</title>
    <%! ResultSet rs;%>  <!--用于存储查询结果集-->
    <%
        String dbName = "study"; // 数据库名
        String userName = "root"; // 用户名
        String userPasswd = "000000"; //密码
        String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
        Class.forName("com.mysql.cj.jdbc.Driver");  // JDBC连接驱动
        Connection conn = DriverManager.getConnection(url); // 建立数据库连接
        Statement statement = conn.createStatement();  // 执行sql语句对象
        // ORDER BY 排序查询, xh 降序排序  姓名升序排序,貌似什么也没有改变
        String sql = "select * from  xsb ORDER BY xh DESC ,xm ASC ";
        rs = statement.executeQuery(sql);   //rs保存查询结果   executeQuery执行查询语句
    %>
</head>
<body>
<table border="1">
    <th colspan="4" style=" font-size: x-large; alignment: center"> 学生信息表</th>
    <tr style=" text-align: center">
        <td>学号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>出生日期</td>
        <td>专业</td>
        <td>成绩</td>
    </tr>
        <% while (rs.next()) {  %>
    <tr style=" text-align: center">
        <td><%= rs.getString(1)  %></td>
        <td><%= rs.getString(2) %> </td>
        <td><%= rs.getString(3)%></td>
        <td><%= rs.getString(4)%></td>
        <td><%= rs.getString(5)%></td>
        <td><%= rs.getString(6)%></td>
    </tr>
        <%  }  %>
</body>
</html>

增加数据

Statement接口存在executeUpdate方法,这个方法可以使用 insert update delete和数据库SQL DDL(数据定义语言),它的返回值是一个整数,指示受影响的行数

fast.JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.sql.*" %>
<%request.setCharacterEncoding("utf-8");%>  <!--- 字符编码>
<% String id=request.getParameter("stuid");%>
<% String stuName=  request.getParameter("stuname");%>
<% String stuBirthday=request.getParameter("stubirthday");%>
<% String stuClass=request.getParameter("stuclass");%>

<head>
    <title>整表查询数据</title>
    <%! ResultSet rs;%>  <!-用于存储查询结果集-->
    <%
        String dbName = "study"; // 数据库名
        String userName = "root"; // 用户名
        String userPasswd = "000000"; //密码
        String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
        Class.forName("com.mysql.cj.jdbc.Driver");  // JDBC连接驱动
        Connection conn = DriverManager.getConnection(url); // 建立数据库连接
        Statement statement = conn.createStatement();  // 执行sql语句对象

//        String sql = "INSERT into xsb(xh,xm,xb,csrq) VALUES('"+id+"','"+stuName+"','"+stuBirthday+"','"+stuClass+"')";
         // 正确的语句 前面添加列,后面添加行
        String sql = "INSERT into xsb(xh,xm,xb,csrq) VALUES('"+id+"','"+stuName+"','"+stuBirthday+"','"+stuClass+"')";
// result 返回执行的行数数字 大于代表成功了
        int  result= statement.executeUpdate(sql);  
        if(result>0)
            out.print("  <script type='text/javascript'>alert('添加成功'); </script> ");
        else
            out.print("  <script type='text/javascript'>alert('添加失败'); </script> ");
        sql = "select * from xsb ";
        rs = statement.executeQuery(sql); // 执行查询语句
    %>
</head>
<body>
<table border="1">
    <th colspan="4" style=" font-size: x-large; alignment: center"> 学生信息表</th>
    <tr style=" text-align: center">
        <td>学号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>出生日期</td>
    </tr>
        <% while (rs.next()) {  %>
    <tr style=" text-align: center">
        <td><%= rs.getString(1)  %></td>
        <td><%= rs.getString(2) %> </td>
        <td><%= rs.getString(3)%></td>
        <td><%= rs.getString(4)%></td>

    </tr>
        <%  }  %>
</body>
</html>

index.JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<body>
<form action="fast.jsp"  method="post" >
  <table>
    <th colspan="2">增加学生信息</th>
    <tr>
      <td>学生学号:</td>
      <td><input type="text" name="stuid" id="stuid"/> </td>
    </tr>
    <tr>
      <td>学生姓名:</td>
      <td><input type="text" name="stuname" id="stuname"/> </td>
    </tr>
    <tr>
      <td>性别:</td>
      <td><input type="text" name="stubirthday" id="stubirthday"/> </td>
    </tr>
    <tr>
      <td>出生日期:</td>
      <td><input type="text" name="stuclass" id="stuclass"/> </td>
    </tr>
    <tr aria-rowspan="2">
      <td><input type="submit" value="提交"></td>
    </tr>
  </table>
</form>
</body>
</html>

更新数据

插入数据可以将数据保存到数据库中,但是SQL语句依赖变量,比较容易出错,

PreparedStatement解决这个情况,它的接口是Statement接口的子接口,它直接继承并重载了Statement的方法

特点

  1. PreparedStatement对象包含的SQL语句是预编译的,所以需要执行多次相同的语句使用这个对象效果更好
  2. PreparedStatement对象所包含的SQL语句允许一个或多个输入参数,创建类PreparedStatement的实例,输入参数用 ?代替, 执行参数必须对 ?赋值,为了成功的赋值, PreparedStatement接口提供了大量setxxx方法完成对参数的赋值

创建PreparedStatement对象

创建PreparedStatement接口的对象只需要在建立连接后,调用Connection接口中的PreparedStatement()创建一个PreparedStatement

String sql ="update student set 字段=?,字段=? where number=? "

PreparedStatement preparedStatement = conn.prepareStatement(sql);

输入参数赋值

提供了setXXX(int index,Object val)方法对输入参数进行赋值,根据输入的参数选择合适的setxxxx方法,index的值从1开始

preparedStatement.setString(1,字段);
preparedStatement.setString(1,id);

执行语句

执行preparedStatement对象的executeUpdateexecuteQuery()就可以完成数据的查询或更新

fast.JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.sql.*" %>
<%request.setCharacterEncoding("utf-8");%>  <!--- 字符编码>
<% String id=request.getParameter("stuid");%>
<% String stuBirthday=request.getParameter("stubirthday");%>
<% String stuClass=request.getParameter("stuclass");%>

<head>
    <title>整表查询数据</title>
    <%! ResultSet rs;%>  <!-用于存储查询结果集-->
    <%
        String dbName = "study"; // 数据库名
        String userName = "root"; // 用户名
        String userPasswd = "000000"; //密码
        String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
        Class.forName("com.mysql.cj.jdbc.Driver");  // JDBC连接驱动
        Connection conn = DriverManager.getConnection(url); // 建立数据库连接
        String sql = "update xsb set xm=?,xb=? where xh=?";
        // 创建一个预编译的 SQL 语句对象(PreparedStatement),并将其与数据库连接(Connection)关联起来。
        PreparedStatement preparedStatement= conn.prepareStatement(sql);
        preparedStatement.setString(1,stuBirthday); // 修改的值
        preparedStatement.setString(2,stuClass); // 修改的值
        preparedStatement.setString(3,id);   // 查询的条件 id=xxxx
        // 更换行数使用executeteUpdate();
        int  result= preparedStatement.executeUpdate();
        if(result>0)
            out.print("  <script type='text/javascript'>alert('修改成功'); </script> ");
        else
            out.print("  <script type='text/javascript'>alert('修改失败'); </script> ");
        sql = "select * from xsb "; // 输出全部的表
        rs = preparedStatement.executeQuery(sql); // 执行查询结果
    %>
</head>
<body>
<table border="1">
    <th colspan="4" style=" font-size: x-large; alignment: center"> 学生信息表</th>
    <tr style=" text-align: center">
        <td>学号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>csrq</td>
    </tr>
    <% while (rs.next()) {  %> <!--循环打印值-->
    <tr style=" text-align: center">
        <td><%= rs.getString(1)  %></td>
        <td><%= rs.getString(2) %> </td>
        <td><%= rs.getString(3)%></td>
        <td><%= rs.getString(4)%></td>
    </tr>
    <%  }  %>

    <%
        rs.close(); //关闭ResultSet对象释放资源
        preparedStatement.close(); // :关闭PreparedStatement对象
        conn.close(); //关闭Connection对象
    %>
</table>
</body>
</html>

index.JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<body>
<form action="fast.jsp"  method="post" >
  <table>
    <th colspan="2">修改学生信息</th>

    <tr>
      <td colspan="2">指定需要被修改的学生信息</td>
    </tr>
    <tr>
      <td>学生学号:</td> <!--根据学号来找人-->
      <td><input type="text" name="stuid" id="stuid"/> </td>
    </tr>
    <tr>
      <td colspan="2">填写需要改正的学生信息</td>
    </tr>
    <tr>
      <td>姓名:</td>
      <td><input type="text" name="stubirthday" id="stubirthday"/> </td>
    </tr>
    <tr>
      <td>性别:</td>
      <td><input type="text" name="stuclass" id="stuclass"/> </td>
    </tr>
    <tr aria-rowspan="2">
      <td><input type="submit" value="提交"></td>
    </tr>
  </table>
</form>
</body>
</html>

删除数据

需要在preparedStatement中设置空值,如果设置具体类型方法,比如setInt(1,null),程序会毫不留情地报出空指针异常,所以需要做的是使用setNull``(index,type)方法代替原来的方法,将参数值赋值为null

index.JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<body>
<form action="fast.jsp"  method="post" >
  <table>
    <th colspan="2">删除学生信息</th>
    <tr>
      <td>学生学号:</td>
      <td><input type="text" name="stuid" id="stuid"/> </td> // 学号的意思
    </tr>
    <tr aria-rowspan="2">
      <td><input type="submit" value="提交"></td>
    </tr>
  </table>
</form>
</body>
</html>

fast.JSP

<% String stuClass=request.getParameter("stuclass");%>

<head>
    <title>整表查询数据</title>
    <%! ResultSet rs;%>  <!-用于存储查询结果集-->
    <%
        String dbName = "study"; // 数据库名
        String userName = "root"; // 用户名
        String userPasswd = "000000"; //密码
        String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
        Class.forName("com.mysql.cj.jdbc.Driver");  // JDBC连接驱动
        Connection conn = DriverManager.getConnection(url); // 建立数据库连接
        String sql = "DELETE from xsb where xh=?"; // 根据学生表的xh是多少来查询删除
     // 创建一个预编译的 SQL 语句对象(PreparedStatement),并将其与数据库连接(Connection)关联起来。   
        PreparedStatement preparedStatement= conn.prepareStatement(sql);
        preparedStatement.setString(1,id); // 按照顺序第一个占位就是第一个 ?
        int  result= preparedStatement.executeUpdate();// 返回数字列数
        if(result>0)
            out.print("  <script type='text/javascript'>alert('删除成功'); </script> ");
        else
            out.print("  <script type='text/javascript'>alert('删除失败'); </script> ");
        sql = "select * from xsb ";
        rs = preparedStatement.executeQuery(sql);// 执行查询结果
    %>
</head>
<body>
<table border="1">
    <th colspan="4" style=" font-size: x-large; alignment: center"> 学生信息表</th>
    <tr style=" text-align: center">
        <td>学号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>出生日期</td>
    </tr>
    <% while (rs.next()) {  %>
    <tr style=" text-align: center">
        <td><%= rs.getString(1)  %></td>
        <td><%= rs.getString(2) %> </td>
        <td><%= rs.getString(3)%></td>
        <td><%= rs.getString(4)%></td>
    </tr>
    <%  }  %>
    <%
        rs.close();
        preparedStatement.close();
        conn.close();
    %>
</table>
</body>
</html>

PreparedStatement Statement

PreparedStatement 可读性更好,虽然代码会多出几行但是维护性更强,并且提升性能,预编译语句还可以被重复的调用,所以语句在被编译器编译后执行代码被缓存下来,下次调用相同的预编译代码就不需要编译,只要传入编译后的语句就可以了

Statement语句相同的操作,每次相同的操作,因为每次操作的数据不同,所以整个语句匹配不了,只能分开写,每执行一个SQL命令都要解析编译, PreparedStatement 对象多次执行同一个语句只会解析一次

复用性

首先创建了一个 PreparedStatement 对象 preparedStatement,并将其与 SQL 查询语句关联起来。然后,可以通过调用 setXxx() 方法设置查询参数的值,再通过调用 executeQuery() 方法执行查询操作。

在每次需要执行查询时,只需更新参数的值,并再次调用 executeQuery() 方法即可。这样可以避免重复创建 PreparedStatement 对象,提高了执行效率

String sql = "SELECT * FROM users WHERE age > ?";
PreparedStatement preparedStatement = conn.prepareStatement(sql);

// 第一次使用 PreparedStatement 对象
int ageThreshold = 18; //   每次传入不同的数字,但是结果集还是不同的 数字可以是自己前端输入的值变量 
preparedStatement.setInt(1, ageThreshold);
ResultSet rs1 = preparedStatement.executeQuery();
// 处理结果集 rs1

// 第二次使用 PreparedStatement 对象
ageThreshold = 25;
// 数字1 2 3代表的是问号的位置,如果语句有2个问好占位符,则值放到第二个语句就是问号2;
preparedStatement.setInt(1, ageThreshold);
ResultSet rs2 = preparedStatement.executeQuery();
// 处理结果集 rs2

// 第三次使用 PreparedStatement 对象
ageThreshold = 30;
preparedStatement.setInt(1, ageThreshold);
ResultSet rs3 = preparedStatement.executeQuery();
// 处理结果集 rs3

注册功能

注意数据库的字段写入类型,字段不匹配的话是无法写入的

index.JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    div{
        width: 500px;
        height: 500px;
        margin: 0 200px;
    }
    h1{
        text-align: center;
    }
</style>
<body>
<div>
    <h1>
        <form action="fast.jsp"  method="post" >
            <table>
                <th colspan="2">会员注册信息</th>
                <tr>
                    <td>用户名</td>
                    <td><input type="text" name="stuid" id="stuid"/> </td>
                </tr>
                <tr>
                    <td>密码</td>
                    <td><input type="text" name="stuname" id="stuname"/> </td>
                </tr>
                <tr>
                    <td>手机号</td>
                    <td><input type="text" name="stubirthday" id="stubirthday"/> </td>
                </tr>
                <tr>
                    <td>出生日期:</td>
                    <td><input type="text" name="stuclass" id="stuclass"/> </td>
                </tr>
                <tr>
                    <td>年龄</td>
                    <td><input type="text" name="age" id="age"/> </td>
                </tr>
                <tr aria-rowspan="2">
                    <td><input type="submit" value="注册"></td>
                </tr>
            </table>
        </form>
    </h1>
</div>
</body>
</html>

fast.JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.sql.*" %>
<%request.setCharacterEncoding("utf-8");%>  <!--- 字符编码>
<% String id=request.getParameter("stuid");%>
<% String stuName=  request.getParameter("stuname");%>
<% String stuBirthday=request.getParameter("stubirthday");%>
<% String stuClass=request.getParameter("stuclass");%>
<% String age=request.getParameter("age");%>

<head>
<title>整表查询数据</title>
<%! ResultSet rs;%>  <!-用于存储查询结果集-->
<%
    String dbName = "study"; // 数据库名
    String userName = "root"; // 用户名
    String userPasswd = "000000"; //密码
    String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd;
    Class.forName("com.mysql.cj.jdbc.Driver");  // JDBC连接驱动
    Connection conn = DriverManager.getConnection(url); // 建立数据库连接
    Statement statement = conn.createStatement();  // 执行sql语句对象

//        String sql = "INSERT into xsb(xh,xm,xb,csrq) VALUES('"+id+"','"+stuName+"','"+stuBirthday+"','"+stuClass+"')";
    // 正确的语句 前面添加列,后面添加行
    String sql = "insert into xue(name,pass,php,age,da) VALUES('"+id+"','"+stuName+"','"+stuBirthday+"','"+stuClass+"','"+age+"')";
// result 返回执行的行数数字 大于代表成功了
    int  result= statement.executeUpdate(sql);
    if(result>0)
        out.print("  <script type='text/javascript'>alert('添加成功'); </script> ");
    else
        out.print("  <script type='text/javascript'>alert('添加失败'); </script> ");
       sql = "select * from  xue ";
      rs = statement.executeQuery(sql); // 执行查询语句
%>
</head>
<body>
<table border="1">
    <th colspan="4" style=" font-size: x-large; alignment: center"> 注册表</th>
    <tr style=" text-align: center">
        <td>用户名</td>
        <td>密码</td>
        <td>手机号</td>
        <td>出生日期</td>
        <td>年龄</td>
    </tr>
        <% while (rs.next()) {  %>
    <tr style=" text-align: center">
        <td><%= rs.getString(1)  %></td>
        <td><%= rs.getString(2) %> </td>
        <td><%= rs.getString(3)%></td>
        <td><%= rs.getString(4)%></td>
        <td><%= rs.getString(5)%></td>
    </tr>
        <%  }  %>
</body>
</html>
posted @ 2024-04-22 22:05  不吃饱不会玩  阅读(5)  评论(0编辑  收藏  举报