Sql server 带SQL Server的SpringBoot JdbcTemplate:不支持从未知到未知的转换
我有一个SpringBoot应用程序。使用JdbcTemplate连接到SQL Server DB的,使用以下语法:Sql server 带SQL Server的SpringBoot JdbcTemplate:不支持从未知到未知的转换,sql-server,jdbc,spring-data,spring-jdbc,jdbctemplate,Sql Server,Jdbc,Spring Data,Spring Jdbc,Jdbctemplate,我有一个SpringBoot应用程序。使用JdbcTemplate连接到SQL Server DB的,使用以下语法: int numOfRowsAffected = remoteJdbcTemplate.update( "insert into dbo.[ATRESMEDIA Resource Time Registr_] " + "( [Entry No_], [Record ID], [Posting Date], [Resource No_], [Job
int numOfRowsAffected = remoteJdbcTemplate.update(
"insert into dbo.[ATRESMEDIA Resource Time Registr_] " +
"( [Entry No_], [Record ID], [Posting Date], [Resource No_], [Job No_], [Work Type], [Quantity], [Unit of Measure], [Description], [Company Name], [Created Date-Time], [Status] ) " +
" VALUES (?,?,?,?,?,?,?,?,?,?,?,?);",
atresMediaTimeRegistr.getEntryNo(),
"Record ID",
atresMediaTimeRegistr.getPostingDate(),
atresMediaTimeRegistr.getResourceNo(),
atresMediaTimeRegistr.getJobNo(),
atresMediaTimeRegistr.getWorkType(),
atresMediaTimeRegistr.getQuantity(),
atresMediaTimeRegistr.getUnitOfMeasure(),
atresMediaTimeRegistr.getDescription(),
atresMediaTimeRegistr.getCompanyName(),
atresMediaTimeRegistr.getCreatedDate(),
1);
其中[Record ID]
是varbinary
类型,但我得到了这个错误
Caused by: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [insert into dbo.[ATRESMEDIA Resource Time Registr_] ( [Entry No_], [Record ID], [Posting Date], [Resource No_], [Job No_], [Work Type], [Quantity], [Unit of Measure], [Description], [Company Name], [Created Date-Time], [Status] ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?);]; SQL state [S0003]; error code [257]; Implicit conversion from data type nvarchar to varbinary is not allowed. Use the CONVERT function to run this query.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Implicit conversion from data type nvarchar to varbinary is not allowed. Use the CONVERT function to run this query.
您的问题有一个答案:
…不允许从数据类型nvarchar隐式转换为varbinary…
您正在尝试将字符串作为varbinary传递。首先你必须这样做
byte[]varBinary=“record_ID”.getBytes(StandardCharsets.UTF_8)代码>
然后将其作为记录ID参数放入jdbcTemplate中。
祝你好运,希望能有所帮助