0

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

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

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

但是,现在我无法将数据导入数据库,而不会在这些字段上失败。当 SQL 失败时,我输出 SQL 字符串,并将其剪切并传递到 ij 中。然后我只修改了第一条记录,总是这些字符让我感到悲伤。

我试图通过用“双引号”括起来来修改字符串,但这只会给出一个不同的错误(说明它在第 1 列 x 处有 'enounterd """,这始终是双引号的第一次出现)。

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

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

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

下面是我将它发送到 derby 时失败的 SQL 插入示例(通过我的 JAVA '程序')

插入 S1.SORTIEDESSAI (OBS, DATEDUSORTIE, CONTREINDIC, FIN, PEVU, REFUS, INVDECISN, ADMIN, MOTIF_DE_LA_SORTIE, NOMVALIDEE, DATEVALIDEE) 值 ('"0001/0001"' , '2007-07-15' , false , true , '"null"' , '"null"' , '"null"' , '"null"' , '"2. FIN DE L'ESSAI"' , '"DR SIMON"' , '2011-04-19' )

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

现在我建议在解决这个问题时推迟任何进一步的答案,好的解决了这个问题,我是否需要设置另一个关于这种行为的问题......回到主线程......

好的,正如您在我的 SQL 语句中看到的那样,我已将任何 varchar 字段用双引号括起来。这总是失败(甚至直接通过 ij)。帮助 帮助 帮助...

4

1 回答 1

0

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

于 2012-08-23T04:22:19.973 回答