Как передать табличные параметры из java в хранимую процедуру sql server?
у меня есть 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"));
мне нужно передать этот arraylist хранимой процедуре sql server и вставить данные объекта student в таблицу. Как лучше всего достичь этого в Java? Я должен иметь хранимую процедуру.
Java версии 8, Sql Server 2014, если его использовать.
1 ответов
на вклад Марк Rotteveel я смог это сделать. Спасибо, Марк,Шон спасибо за Ваш вклад, а также. Вот рабочий код для любого из вас это может оказаться полезным.
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();