Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向DerbyDB添加多个记录时的转义序列_Java_Sql_Escaping_Derby - Fatal编程技术网

Java 向DerbyDB添加多个记录时的转义序列

Java 向DerbyDB添加多个记录时的转义序列,java,sql,escaping,derby,Java,Sql,Escaping,Derby,我正在将(或试图)Ms AccessDB转换为derby 当我从access的某些varchar/text/memo字段中提取数据时,它们会被撇号、数学符号(百分比、小于等)以及可能的外来字符填充 我需要保留这些,并对它们进行测试,以便使用“转义序列”确保它们被放入数据库 然而,目前我无法将数据输入数据库,除非它在这些字段上失败。当SQL失败时,我输出SQL字符串,并将其剪切并通过ij。然后我只修改了第一条记录,总是这些字符让我感到悲伤 我试图通过使用“双引号”来修改字符串,但这只是给出了一个不

我正在将(或试图)Ms AccessDB转换为derby

当我从access的某些varchar/text/memo字段中提取数据时,它们会被撇号、数学符号(百分比、小于等)以及可能的外来字符填充

我需要保留这些,并对它们进行测试,以便使用“转义序列”确保它们被放入数据库

然而,目前我无法将数据输入数据库,除非它在这些字段上失败。当SQL失败时,我输出SQL字符串,并将其剪切并通过ij。然后我只修改了第一条记录,总是这些字符让我感到悲伤

我试图通过使用“双引号”来修改字符串,但这只是给出了一个不同的错误(说明它在第1行第x列有“enounterd”“”,这总是双引号的第一个出现)

我还没有在derby中找到改变字符串行为的设置,有吗

我还尝试将SQL语句设置为preparedStatement,然后使用{call preparedStatement}再次失败。我不能在正常语句中使用{escape“escape char},因为derby只是对我说了不正确的语法

其他人是如何将带有奇怪字符的用户内容放入derby中的字段的? 我是否需要将字段更改为CLOB或varchar/long varchar以外的内容? 我的问题是由于使用了错误的字符集(例如iso而不是UTF-8)引起的吗?我如何判断它是什么,如何更改它

下面是一个SQL插入的示例,当我将其发送到derby时失败(通过我的JAVA“程序”)

插入S1.SORTIEDESSAI(OBS、DATEDUSORTIE、CONTREINDIC、FIN、, PDEVU、REFUS、INVDESIN、ADMIN、MOTIF_DE_LA_出动、NOMVALIDEE、, DATEVALIDEE)值('0001/0001','2007-07-15',假,真, "空","空","空","空","2.FIN DE L'ESSAI",, "西蒙博士","2011-04-19")

注: 实际上,我看了上面的内容,发现列名的顺序不好?昨天还可以,不知道为什么会改变?这与Access以随机顺序从resultSetMetaData返回列名有关,这将是一个惊喜

现在,我建议在我整理这个问题的时候,不要再回答其他问题,好吧,解决了那个问题,我需要再问一个关于这个行为的问题吗。。。。 回到主线程


好的,正如您在我的SQL语句中看到的,我已经将所有varchar字段包装在双引号中。这总是失败(即使直接通过ij)。帮助帮助…

我不太确定您的问题是什么,但通常您可以使用以下形式的PreparedStatement输入这些字符:INSERT INTO tablename(columnname)值(?),然后使用PreparedStatement.setString()方法提供该列的字符数据。

我正在有效地捕获MS Access表中的所有数据,然后复制表结构并插入数据,我已将我的答案编辑为包含insert语句的示例。。。我不确定一开始我是否理解你的评论。您是否建议我创建一个准备好的statant,然后在准备好记录时一次插入一个记录。。。如果这么公平的话,为什么我不能用普通语句插入这些字符,然后转义呢?我想你可以用普通语句插入这些字符,然后转义。您可以在这里看到这些字符串的Derby规则:请注意,您应该对字符串使用单引号,而不是双引号。我主要是建议您可能会发现使用参数替换更容易避免这些问题。