如何使用 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种方法

JDBC如何在自增字段中插入记录

如何同时往数据库中插入多条记录???

如何在 Spring Data JDBC 中插入默认值

如何使 ManyToMany 字段的值显示在 Django 通用 DeleteView 中

求助!!如何在java代码中,将日期插入mysql数据库(对应字段类型是datetime),用JDBC连接数据库。