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

标签 java sql-server sql-server-2008 jdbc mssql-jdbc

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

Name, Department, Address, Grade. 

现在我有一个 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"));

我需要将此数组列表传递给 sql server 存储过程并将学生对象数据插入表中。 如何在 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();

关于java - 如何将表值参数从java传递到sql server存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36575529/

相关文章:

java - 过滤 JAAS 登录信息?

sql-server - SQL 服务器和 patindex 意外结果

sql-server - dacpac - CLR 程序集引用路径问题

sql - 当有一组时,将多行合并为一行

sql - 无需表扫描即可获取标识列的最大值

sql - 将列选择为按列值分组的行

java - 为什么字典初始化时不会发生内存溢出?

java - hibernate保存中的可序列化字符串(对象实体,可序列化id)

java - 运行另一个应用程序,如果失败打开 Google Play

sql-server-2008 - 合并 2 个 SQL Server 数据库