gpt4 book ai didi

java - 在插入 derbyDB varchar 字段之前搜索 'special' 个字符的 java 字符串

转载 作者:行者123 更新时间:2023-12-02 09:46:03 25 4
gpt4 key购买 nike

我正在尝试从 MS Access 转换为 DerbyDB。但是,某些 varchar 字段具有“特殊”字符,例如换行符、制表符、百分号、外来字符等。

我创建了一个快速方法...

public String charCheck(String s)
{


errLog.add(1, "converting string from " + s);
s.replaceAll("'", "''");//an apostrophe is escaped with an apostrophy in Derby...
s.replaceAll("%", "\\%");//a percent sign
s.replaceAll("\\s+n", " ");//whitespace characters (newlines and tabs etc)
s.replaceAll("/", "\\/");//the 'divide' \ character,
s.replaceAll("<", "\\<");//mathematical symbol less than
s.replaceAll(">", "\\>");//mathematical symbol greater than
errLog.add(1, "to " + s);

return s;
}//end method

每当我确定需要 varchar(或 long varchar)数据类型时,我都会运行它。奇怪的是,我的错误日志打印出消息,但在输出中的空白字符似乎没有改变(即制表符和新行,不会转换为简单的空格)并且字符串中的任何撇号都不会被替换。

此方法的输出示例产生以下结果。
converting string from 2.   FIN DE L’ESSAI
to 2. FIN DE L’ESSAI

所以字符串显然保持不变,这会在我运行插入语句时打乱 derbyDB,而且我没有找到任何关于将多条记录插入表中的转义序列的明显文档,我想使用一个语句然后在后面添加转义关键字它,即
stmt.execute("{call "+ sqlInsertStatement +"}{escape '" + escapeCharacter +"'" );

我还从文档中读到,escape 关键字在上面的语句中可能没有用,如果是这样,我该怎么做

我需要知道去哪里对我得到的插入错误进行排序。

如果我将插入语句直接复制并传递到 ij 中,然后删除记录将插入的特殊字符,我只是不明白为什么它没有在第一个实例中被转换。

我也试过用双引号包围 varchar 和 longvarchar 字段,但是 derby 再次抛出一个错误,说找到了双引号!

我想解决这个问题,因为我觉得我很接近......

提前致谢

最佳答案

字符串是不可变的,您对它们执行的所有操作都会产生新的字符串。您需要将当前引用分配给新字符串。

示例:
s= s.replaceAll("'", "''");
如果只是更换,则replace()可能是最好的选择,而不是使用 replaceAll()

关于java - 在插入 derbyDB varchar 字段之前搜索 'special' 个字符的 java 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12075355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com