java - 如何处理 Java PreparedStatement 中的特殊字符?

标签 java string special-characters

在以下使用 PreparedStatement 类的 SQL 查询中:

String query_descrip = "insert into timitemdescription (itemkey, languageid, longdesc, shortdesc) values (?, 1033, ?,?)";
PreparedStatement pstmt2 = con.prepareStatement(query_descrip); 
pstmt2.setInt(1, rs4);
pstmt2.setString(2, itemdescription);
pstmt2.setString(3, itemdescription.substring(0,39));
pstmt2.executeUpdate();       

有时我的项目描述中会出现撇号以及单引号和双引号。例如,我最近发布的一个项目是“Planar 22”监视器”。当然,该字符串被误解,并认为描述值只是“Planar 22”。 处理字符串中特殊字符的最佳方法是什么?

我读到有些人正在使用正则表达式,但是这些似乎是特定于具体情况的。我正在研究的另一种方法是逐个字符读取字符串数组。我希望有一种更有效且资源消耗更少的方法来做到这一点。

更新 经过一些更广泛的测试后,事实证明我的代码中出现了更多问题。这也是一个 URL 编码问题。当 html 表单由 jsp 代码填充时,它会尝试将描述字段移动到在线表单,它会在表单上而不是在查询上截断它。 jTDS 还纠正了接收特殊字符的问题。由于 jTDS 是一个 jar,因此它还有助于避免重新启动计算机。我将奖励 jTDS 线程,因为这是我部分使用的。

提前致谢

最佳答案

由于您使用的是PreparedStatement,因此您根本不必执行任何操作,它将由 JDBC 驱动程序为您处理。您唯一需要注意的是非 ASCII 字符,特别是您必须确保数据库表对文本列使用可以处理您要使用的所有字符的编码。但这是 SQL 问题,而不是 Java 问题。

关于java - 如何处理 Java PreparedStatement 中的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911822/

相关文章:

Java - 异常评估

string - MATLAB 字符串处理

c++ - 在 C++ 中将字节字符串拆分为 BYTES vector

java - 使用 webstart 时加载 svg 文件会导致问题

java - 上传的文件保存在服务器的什么位置?

c# - 正则表达式模式匹配 : Using only the start and end of a pattern for matching

java - 关于java中的特殊字符

iphone - 如何在UILabel文本中显示版权图标?

java - 使用 UTF-8 时,为什么 equalsIgnoreCase() 对字母 æ、ø、å 失败?

java - 自定义 Eclipse 格式