在Clob中转换字符串

时间:2019-06-13 15:57:25

标签: java spring string clob

我有一个字符串“ stringData”,我想将其转换为Clob,您能帮我吗?

我尝试过:

Clob clob = new SerialClob(stringData.toCharArray());

但是它给出了错误。

1 个答案:

答案 0 :(得分:1)

因此Unhandled Exception的问题不是.toCharArray()SerialClob的问题。相反,问题在于必须捕获或声明Checked Exception作为方法的一部分。

所以(示例1):

try {
  ...
  Clob clob = new SerialClob(stringData.toCharArray());
  ...
}
catch (SQLException e) {
  // do handle better than this, however
  e.printStackTrace();
}

或(示例2):

/**
   @throws SQLException If there is an issue with creating the data, or 
                        inserting into the DB
*/
private void storeData(StringData stringData) throws SQLException
{
  ...
  Clob clob = new SerialClob(stringData.toCharArray());
  ...
 }

当然,对于后者,还需要其他一些方法来捕获SQLException。

本质上,SQLException是CheckedException。从JLS 11.2

  

Java编程语言要求程序包含用于检查异常的处理程序,这些异常可能是由于执行方法或构造函数而导致的。对于每个可能的结果检查异常,方法(§8.4.6)或构造函数(§8.8.5)的throws子句必须提及该异常的类或该异常的类的超类之一(§ 11.2.3)。

因此,必须捕获SQLException(示例1),或将其添加到方法的throws子句中(示例2)。

在以下位置找到收到编译时间问题的原因 JLS, 11.2.3 Exception Checking

  

当E是检查的异常类并且E不是在方法或构造函数的throws子句中声明的某个类的子类时,如果方法或构造函数主体可以抛出某些异常类E,则是编译时错误。 / p>

this question about Checked vs. Unchecked Exceptions的公认答案中也有讨论