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

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

 Name, Department, Address, Grade. 

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

 List stuList = new ArrayList(); 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")); 

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

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

通过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();