- 开发Java数据库应用程序,该程序针对教学数据库JXDB8及其三个表STUDENT、COURSE、SC进行数据的增删改查操作。程序功能具体包括:
(1)输入相关数据到三个表中,包括教材中三个表的数据;
(2)定义有参数的存储过程,并调用存储过程,要求根据用户的输入实现数据查询:①查询指定学号的学生的全部信息,②查询指定课程学生的全部修课信息。要求以表单的形式显示查询的结果;
(3)更新指定学生的学生信息;
(4)删除指定学生的选课信息;
(1)数据库中的操作:
建立数据库JX_DB8
CREATE DATABASE jx_db8;
建立表student的结构
CREATE TABLE student(
Sno CHAR(9),
sname CHAR(20),
sex CHAR(2),
sage INT,
sdept CHAR(20)
);
建立表course的结构
CREATE TABLE Course(
Cno CHAR(6),
Cname VARCHAR(10),
Lhour SMALLINT,
Ccreadit SMALLINT,
Semester CHAR(2)
);
建立表sc的结构
CREATE TABLE SC(
Sno CHAR(8),
Cno CHAR(6),
Grade SMALLINT
);
JAVA语句对student表增加数据:
package com.sql;
import java.sql.*;
public class student {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://127.0.0.1:3307/jx_db8";
Connection conn=DriverManager.getConnection(jdbc, "root", "022831");//链接到数据库
Statement state=conn.createStatement(); //容器
String sql="insert into student values('15202101','刘芳','女',17,'计算机系'),"
+ "('15202102','张晓晨','男',19,'计算机系'),"
+ "('15202103','王文选','男',20,'计算机系'),"
+ "('15202104','张玲','女',21,'计算机系'),"
+ "('15202105','李莉萍','女',19,'计算机系')"; //SQL语句
state.executeUpdate(sql); //将sql语句上传至数据库执行
conn.close();//关闭通道
}
}
JAVA语句对course表增加数据:
package com.sql;
import java.sql.*;
public class course {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://127.0.0.1:3307/jx_db8";
Connection conn=DriverManager.getConnection(jdbc, "root", "022831");//链接到数据库
Statement state=conn.createStatement(); //容器
String sql="insert into course values('CS-110','计算机导论','32','2','秋'),"
+ "('CS-201','数据结构','80','5','秋'),"
+ "('CS-221','软件工程','64','4','春'),"
+ "('EE-122','电路基础','48','3','秋'),"
+ "('EE-201','电工电子','80','5','春')"; //SQL语句
state.executeUpdate(sql); //将sql语句上传至数据库执行
conn.close();//关闭通道
}
}
JAVA语句对sc表增加数据:
package com.sql;
import java.sql.*;
public class sc {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://127.0.0.1:3307/jx_db8";
Connection conn=DriverManager.getConnection(jdbc, "root", "022831");//链接到数据库
Statement state=conn.createStatement(); //容器
String sql="insert into sc values('15202101','CS-110',95),"
+ "('15202101','CS-201',90),"
+ "('15202102','CS-110',85),"
+ "('15202102','EE-201',80),"
+ "('15202103','CS-110',82),"
+ "('15202103','CS-201',75),"
+ "('15202103','EE-122',87)"; //SQL语句
state.executeUpdate(sql); //将sql语句上传至数据库执行
conn.close();//关闭通道
}
}
(2)①
查询学号为15202101的学生的信息
package com.use;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
public class stuuse {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://127.0.0.1:3307/jx_db8";
Connection conn=DriverManager.getConnection(jdbc, "root", "022831");//链接到数据库
try{
ResultSet rs = null;
// 设置调用的存储过程名及参数情况,注意的是存储过程不可以有输出参数
CallableStatement proc = conn.prepareCall("{ call show_stu(?)}");
// 设置输入参数
proc.setString(1,"15202101");
// 调入存储过程
proc.execute();
// 取出存储过程的结果集
rs = proc.getResultSet();
for(int i=0;rs.next();i++)
System.out.println("姓名:"+rs.getString(2)+" "+"性别:"+rs.getString(3)+" "+"年龄:"+rs.getString(4)+" "+"系:"+rs.getString(5));
conn.close();
}catch (SQLException e){
e.printStackTrace();
}}}
存储过程的SQL语句:
DELIMITER //
CREATE PROCEDURE show_stu(IN sno1 CHAR(9))
BEGIN
SELECT * FROM student
WHERE sno=sno1;
END //
DELIMITER;
②查询指定课程学生的全部修课信息
JAVA代码:
package com.use;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
public class scuse {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://127.0.0.1:3307/jx_db8";
Connection conn=DriverManager.getConnection(jdbc, "root", "022831");//链接到数据库
try{
ResultSet rs = null;
// 设置调用的存储过程名及参数情况,注意的是存储过程不可以有输出参数
CallableStatement proc = conn.prepareCall("{ call show_sc(?)}");
// 设置输入参数
proc.setString(1,"EE-201");
// 调入存储过程
proc.execute();
// 取出存储过程的结果集
rs = proc.getResultSet();
for(int i=0;rs.next();i++)
System.out.println(rs.getString(1));
conn.close();
}catch (SQLException e){
e.printStackTrace();
}}}
SQL语句:
DELIMITER $
CREATE PROCEDURE show_sc(IN cno1 CHAR(6))
BEGIN
SELECT cno FROM sc
WHERE sno IN (SELECT sno FROM sc WHERE (cno=cno1));
END $
DELIMITER;
更新的JAVA语句:
package com.change;
import java.sql.*;
public class stuchange {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://127.0.0.1:3307/jx_db8";
Connection conn=DriverManager.getConnection(jdbc, "root", "022831");//链接到数据库
Statement state=conn.createStatement(); //容器
String sql="update student set sage=25 where sno='15202101' "; //SQL语句
state.executeUpdate(sql); //将sql语句上传至数据库执行
conn.close();//关闭通道
}
}
删除的JAVA语句:
package com.change;
import java.sql.*;
public class scchange {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://127.0.0.1:3307/jx_db8";
Connection conn=DriverManager.getConnection(jdbc, "root", "022831");//链接到数据库
Statement state=conn.createStatement(); //容器
String sql="delete from sc where sno='15202101'"; //SQL语句
state.executeUpdate(sql); //将sql语句上传至数据库执行
conn.close();//关闭通道
}
}