CREATE TABLE student2
(
number varchar(6) primary key, --学号
name varchar(8) not null unique, --姓名
password varchar(6) not null, --密码
)
GO
INSERT stu VALUES ('000001','黎明','111111') INSERT stu VALUES ('000002','赵怡春','222222') INSERT stu VALUES ('000003','张富平','333333') INSERT stu VALUES ('000004','白丽','444444') INSERT stu VALUES ('000005','牛玉德','555555') INSERT stu VALUES ('000006','姚华','666666') INSERT stu VALUES ('000007','李南','777777')
GO
CREATE TABLE grade
(
number varchar (6), --学号
course varchar (20) , --课程名称
grade int, --成绩
CONSTRAINT PK_grade PRIMARY KEY CLUSTERED (
number,course
)
)
GO
INSERT INTO grade VALUES ('000001','C++',56);
INSERT INTO grade VALUES ('000002','Java',90);
INSERT INTO grade VALUES ('000004','Java',77);
INSERT INTO grade VALUES ('000005','英语',91);
INSERT INTO grade VALUES ('000004','C++',76);
INSERT INTO grade VALUES ('000003','C++',67);
INSERT INTO grade VALUES ('000001','英语',78);
INSERT INTO grade VALUES ('000002','C++',74);
INSERT INTO grade VALUES ('000002','英语',86);
INSERT INTO grade VALUES ('000003','Java',80);
INSERT INTO grade VALUES ('000004','英语',90);
GO
CREATE PROCEDURE GetGradesFromStuName
@stuName varchar(8)
AS
select course,grade from student2 inner join grade on student2.number=grade.number where name=@stuName
package databasevisit;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import javax.swing.JOptionPane;
public class IncomingParametersUsingTheStoredProcedure {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection con = null;
// 执行存储过程的数据命令
CallableStatement cstm = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
String name = JOptionPane.showInputDialog("请输入学生姓名");
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver ");
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=test", "sa",
"jocean");
cstm = con.prepareCall("{call GetGradesFromStuName(?)}");
// 设置姓名传入参数
cstm.setString(1, name);
rs = cstm.executeQuery();
rsmd = rs.getMetaData();
while (rs.next()) {
for (int i = 1; i <= rsmd.getColumnCount(); i++) { System.out.print(rs.getObject(i) + "\t");
}
System.out.println();
}
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
try {
rs.close();
cstm.close();
con.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}。