Java 如何在DB2中插入带有单撇号的值

Java 如何在DB2中插入带有单撇号的值,java,string,replace,db2,Java,String,Replace,Db2,我的要求是使用java查询将包含撇号(例如St.Mary)的值插入DB2 为此,我的表有一个数据类型为Char(26)的列名,不能更改 我用以下方法处理撇号: String CityName = beanClass.getCity(); if(CityName.contains("'")) { CityName.replace("'","''"); } prepStmt.setString(1, CityName)

我的要求是使用java查询将包含撇号(例如St.Mary)的值插入DB2

为此,我的表有一个数据类型为Char(26)的列名,不能更改

我用以下方法处理撇号:

String CityName = beanClass.getCity();
        if(CityName.contains("'"))
        {
            CityName.replace("'","''");
        }   
  prepStmt.setString(1, CityName);
查询如下所示:

INSERT INTO TableName(CityName) VALUES(?);
(Where values are being received from the preparedStatement(Index,String) (prepStmt.setString(int,string))
请帮助我在DB2中插入带撇号的值“St.Mary's”


谢谢你,瓦沙。

将任何单撇号替换为

CityName.replace(“'”,“\\”)


\\“results in\”因为前两个反斜杠导致\

单引号的转义字符是双单引号。例如,要插入圣玛丽教堂,您需要执行以下操作

 INSERT INTO TABLE VALUES ('St.Mary''s')
但是,它适用于普通SQL。这取决于您如何从Java中调用它。如果该列是预处理语句中的参数标记,则不需要该标记


此外,如果您从其他组件传递参数,可能需要转义单引号字符。

您不必担心撇号,根本不要替换它。JDBC应该正确地处理它。与我在上面使用的代码片段相同。替换后,我得到的值为St.Mary's。我仍然无法将其插入DB2。请帮忙!我运行了以下查询:insert into Table values(8,'PRINCE GEORGE'S')并得到以下错误:[错误代码:-117,SQL状态:42802]指定值的数量与指定或隐含列的数量不同。SQLCODE=-117,SQLSTATE=42802,DRIVER=4.13.127您在哪里运行这个句子?中电?来自Java?准备好的声明?有多少个参数标记?我尝试替换\\'。替换后,我得到的值为St.Mary's。我仍然无法将其插入DB2。不确定原因。运行此查询:insert into Table values(8,'PRINCE GEORGE\\'S'),我得到以下错误:[错误代码:-104,SQL状态:42601]非法符号“S”。某些可能合法的符号为:。SQLCODE=-104,SQLSTATE=42601,DRIVER=4.13.127查询应该是:使用CityName.replace(“”,“\\”)插入表值(8,'PRINCE GEORGE'S');会给你乔治王子的,而不是乔治王子的,只有代码的sanswer被认为是不好的。尝试添加一些解释。在将值插入SQLServer DB时,如果列值包含撇号,则无法插入,swe应将该撇号设置为常量,以便使用value.replace()方法替换该撇号。稍后我们可以添加到值列表中
 String value1 = "" +jsonObject.get(key)+"";
 if(value1.contains("'")){
    value1 = value1.replace("'", "\''");
}

 value = value +"\'"+value1+"\'";   
// value.replaceAll("\"", "\\" + "\"");
 listofkey+=",";
 value+=",";