如何使用 jdbc 在字段中插入带分号的值?
Posted
技术标签:
【中文标题】如何使用 jdbc 在字段中插入带分号的值?【英文标题】:How insert a value with semicolon in field with jdbc? 【发布时间】:2019-02-15 14:10:40 【问题描述】:我有:
`<beans profile="h2">
<import resource="classpath:config/db-config.xml" />
<context:property-placeholder location="classpath:config/batch.h2.properties" />
<jdbc:initialize-database data-source="dataSource">
<jdbc:script location="classpath:rendicontazione/configurazione/create_configurazione.sql"/>
<jdbc:script location="classpath:rendicontazione/configurazione/insert_configurazione.sql"/>
</jdbc:initialize-database>
<import resource="classpath:config/batch-context-test.xml" />
</beans>`
错误位于 insert_configurazione.sql 中。
查询:
INSERT INTO CONFIGURAZIONE (DOMINIO,CHIAVE,VALORE)
VALUES ('XXX','YYY','a;b;c;d;e;f');
如果我尝试:
INSERT INTO CONFIGURAZIONE (DOMINIO,CHIAVE,VALORE)
VALUES ('XXX','YYY','"a;b;c;d;e;f"');
行已插入,但VALORE
的值为"a;b;c;d;e;f"
。
或
INSERT INTO CONFIGURAZIONE (DOMINIO,CHIAVE,VALORE)
VALUES ('XXX','YYY','a\;b\;c\;d\;e\;f');
结果是:a\;b\;c\;d\;e\;f\;
我想要VALORE
= a;b;c;d;e;f
的值
堆栈跟踪:
INSERT INTO CONFIGURAZIONE (DOMINIO,CHIAVE,VALORE) VALUES ('XXX','YYY','a [42000-197]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.message.DbException.getSyntaxError(DbException.java:203)
at org.h2.command.Parser.getSyntaxError(Parser.java:548)
at org.h2.command.Parser.checkRunOver(Parser.java:4080)
at org.h2.command.Parser.initialize(Parser.java:3989)
at org.h2.command.Parser.parse(Parser.java:322)
at org.h2.command.Parser.parse(Parser.java:311)
at org.h2.command.Parser.prepareCommand(Parser.java:278)
at org.h2.engine.Session.prepareLocal(Session.java:611)
at org.h2.engine.Session.prepareCommand(Session.java:549)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247)
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:217)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:205)
at com.jolbox.bonecp.StatementHandle.execute(StatementHandle.java:254)
at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:473)
... 55 more
【问题讨论】:
我也试过:INSERT INTO CONFIGURAZIONE (DOMINIO,CHIAVE,VALORE) VALUES ('XXX','YYY','a\;b\;c;d\;e\;f');
INSERT INTO CONFIGURAZIONE (DOMINIO,CHIAVE,VALORE) VALUES ('XXX','YYY','a/;b/;c;d/;e/;f');
标题请使用正常大小写,所有大写字母都难以阅读,被认为是大喊大叫。另外请发布minimal reproducible example 并确保包含相关的异常堆栈跟踪。
发布的堆栈跟踪不完整。它错过了实际的异常。
【参考方案1】:
试试:
INSERT INTO CONFIGURAZIONE (DOMINIO,CHIAVE,VALORE)
VALUES ('XXX','YYY','"a\;b\;c\;d\;e\;f"');
【讨论】:
这是结果:"a\;b\;c\;d\;e\;f"以上是关于如何使用 jdbc 在字段中插入带分号的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取新插入Oracle数据库Sequence值的5种方法