如何将表值参数从java传递给sql server存储过程?

Uma*_*nth 9 java sql-server jdbc sql-server-2008 mssql-jdbc

我有一个Student具有以下属性的类:

Name, Department, Address, Grade. 
Run Code Online (Sandbox Code Playgroud)

现在我有一个ArrayList包含这样的Student对象,

List<Student> stuList = new ArrayList<Student>();
stuList.add(new Student("Tom","Comp", "123 street", "A"));
stuList.add(new Student("Jery","Comp", "456 street", "A+"));
stuList.add(new Student("Mac","Maths", "Dum Street", "B"));
Run Code Online (Sandbox Code Playgroud)

我需要将此arraylist传递给sql server存储过程并将student对象数据插入表中.如何在Java中实现这一目标?我需要有一个存储过程.

Java版本8,Sql Server 2014如果有任何用处.

Uma*_*nth 13

通过Mark Rotteveel提供的输入,我能够做到这一点.谢谢Mark,Sean感谢您的投入.以下是任何可能发现它有用的工作代码.

String jdbcurl = "jdbc:sqlserver://TestServer:1433;DatabaseName=Student";
connection = DriverManager.getConnection(jdbcurl,"username","password");

SQLServerDataTable stuTypeDT = new SQLServerDataTable(); 
stuTypeDT.addColumnMetadata("StudentId", java.sql.Types.NUMERIC);
stuTypeDT.addColumnMetadata("Name", java.sql.Types.VARCHAR);
stuTypeDT.addColumnMetadata("Department", java.sql.Types.VARCHAR);
stuTypeDT.addColumnMetadata("Address", java.sql.Types.VARCHAR);

stuTypeDT.addRow("1","Tom", "A", "123 Street");
stuTypeDT.addRow("2","Jery", "B", "456 Street");
stuTypeDT.addRow("3","Mac", "C", "Vancour");

String ececStoredProc = "EXEC InsertStudentInfo ?";
SQLServerPreparedStatement pStmt = (SQLServerPreparedStatement)connection.prepareStatement(ececStoredProc);
pStmt.setStructured(1, "dbo.StudentInfoType", stuTypeDT);
pStmt.execute();
Run Code Online (Sandbox Code Playgroud)