java - 如何将 Java 对象从 Java 代码转换为 SQL Server 表值参数

标签 java sql-server

如何将 Java 对象转换为 SQL Server 表值参数?

public class User {
    private int userId; 
    private String firstName; 
    private String lastName; 
    private String gender; 
    private String city;
}
CREATE TABLE TEST_USER]( 
    [USER_ID] [int] NOT NULL, 
    [FIRST_NAME] [varchar](100) NULL, 
    [LAST_NAME] [varchar](100) NULL,
    [GENDER] [varchar](10) NULL, 
    [CITY] [varchar](30) NULL, 
    PRIMARY KEY ( [USER_ID] )
); 

CREATE TYPE USERTYPE AS TABLE ( 
    USER_ID INTEGER NOT NULL , 
    FIRST_NAME VARCHAR(100), 
    LAST_NAME VARCHAR(100), 
    GENDER VARCHAR(10), 
    CITY VARCHAR(30) 
); 

CREATE PROCEDURE SP_InsertUser @UserDetail USERTYPE READONLY  
AS 
BEGIN
   SET NOCOUNT ON
  INSERT INTO TEST_USER (USER_ID, FIRST_NAME, LAST_NAME, GENDER,CITY) 
   SELECT [USER_ID], [FIRST_NAME], [LAST_NAME],[GENDER],[CITY] FROM @UserDetail 
END

我想将 User 类的对象转换为 (SQL Server)USERTYPE 表类型

最佳答案

在 JDBC 中使用以下逻辑:

SQLServerDataTable table = new SQLServerDataTable();
table.addColumnMetadata("USER_ID", Types.INTEGER);
table.addColumnMetadata("FIRST_NAME", Types.VARCHAR);
table.addColumnMetadata("LAST_NAME", Types.VARCHAR);
table.addColumnMetadata("GENDER", Types.VARCHAR);
table.addColumnMetadata("CITY", Types.VARCHAR);
table.addRow(
    user.getUserId(),
    user.getFirstName(),
    user.getLastName(),
    user.getGender(),
    user.getCity()
);

try (SQLServerPreparedStatement stmt=
    (SQLServerPreparedStatement) connection.prepareStatement(
       "{ call SP_InsertUser (?) }")) {

    stmt.setStructured(1, "dbo.usertype", table);  
    stmt.executeUpdate();
}

I have described this also in this blog post here .

关于java - 如何将 Java 对象从 Java 代码转换为 SQL Server 表值参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31981839/

相关文章:

java - RecyclerView 将未选定的项目标记为已选定

ASP.NET 模拟 NT AUTHORITY\IUSR 但模拟被禁用。 ASP.NET 错误?

.net - 如何提高SQL Server存储过程的性能?

java - neo4j中如何遍历节点属性的顺序列表?

java - JPA:查询未获取最新数据

java - 创建类路径资源 META-INF/cxf/cxf.xml 中定义的名称为 'cxf' 的 bean 时出错

java - TabListener 不起作用

sql-server - 使用存储过程将一些数据插入表中

c# - 如何解决 "Procedure or function has too many arguments specified"异常?

c# - 从 2 个查询中选择更好的查询,都返回相同的结果