SpringBoot JdbcTemplate 与 SQL Server

Posted

技术标签:

【中文标题】SpringBoot JdbcTemplate 与 SQL Server【英文标题】:SpringBoot JdbcTemplate with SQL Server 【发布时间】:2018-02-15 10:10:06 【问题描述】:

我有一个 SpringBoot 应用程序。使用 JdbcTemplate 连接到 SQL Server DB,使用以下语法:

int numOfRowsAffected = remoteJdbcTemplate.update(
                "insert into dbo.[ATRESMEDIA Resource Time Registr_]  " +
                "(Entry No_, Posting Date, Resource No_, Job No_, Work Type, Quantity, Unit of Measure, Description, Company Name, Created Date-Time ) " +
                        " VALUES (?,?,?,?,?,?,?,?,?,?);",

                        atresMediaTimeRegistr.getEntryNo(),
                        atresMediaTimeRegistr.getPostingDate(),
                        atresMediaTimeRegistr.getResourceNo(),
                        atresMediaTimeRegistr.getJobNo(),
                        atresMediaTimeRegistr.getWorkType(),
                        atresMediaTimeRegistr.getQuantity(),
                        atresMediaTimeRegistr.getUnitOfMeasure(),
                        atresMediaTimeRegistr.getDescription(),
                        atresMediaTimeRegistr.getCompanyName(),
                        atresMediaTimeRegistr.getCreatedDate());

但是我收到了这个错误:

com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near 'No_'.

【问题讨论】:

【参考方案1】:

您的列名带有空格,请使用方括号[] 表示列名,如下所示。

int numOfRowsAffected = remoteJdbcTemplate.update(
                "insert into dbo.[ATRESMEDIA Resource Time Registr_]  " +
                "([Entry No_], [Posting Date], [Resource No_], [Job No_], [Work Type], [Quantity], [Unit of Measure], [Description], [Company Name], [Created Date-Time] ) " +
                        " VALUES (?,?,?,?,?,?,?,?,?,?);",

例如,如果您尝试在 SQL 中进行如下查询

INSERT INTO TABLE1(Entry No_)
SELECT 1

你会得到同样的错误。

消息 102,级别 15,状态 1,第 1 行“No_”附近的语法不正确。

【讨论】:

以上是关于SpringBoot JdbcTemplate 与 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

spring boot中使用JdbcTemplate

SpringBoot 中 jdbctemplate 的使用

SpringBoot使用JdbcTemplate

SpringBoot使用JdbcTemplate

springboot 整合jdbcTemplate

SpringBoot2.0 基础案例(06):引入JdbcTemplate,和多数据源配置