web-dev-qa-db-ja.com

テーブル値パラメーターをJavaからsqlサーバーのストアドプロシージャに渡す方法は?

次の属性を持つ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"));

この配列リストをSQLServerのストアドプロシージャに渡し、学生オブジェクトデータをテーブルに挿入する必要があります。 Javaでこれを最もよく達成する方法は?ストアドプロシージャが必要です。

Javaバージョン8、SQL Server 2014(使用する場合)。

9
Umakanth

Mark 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();
13
Umakanth