2013-05-07 14 views
0

我在一个字段中调用一个请求的存储过程,其中包含超过100个字符,并且由于字段大小为100而导致失败,以及如何将请求分割为每100个字符特定领域?该特定字段的最大大小为100,当将250个字符传递给该字段时,我们必须将每100个字符的呼叫拆分。将请求分隔为每100个字符

仅供读取数据库中的值,不会将任何内容更新到数据库中。

+1

您可以添加更多的细节?存储过程有一个最大大小为100的字段,是它失败的原因吗? – raffian 2013-05-07 02:40:02

+1

可能的重复http://stackoverflow.com/questions/2297347/splitting-a-string-at-every-n-th-character – hrezs 2013-05-07 02:41:38

回答

1

你给很少去上,但这里是我最好的猜测,在一个解决方案:

String longStr; // your long string 

for (String max100 : longStr.split("(?<=.{,100})")) { 
    connection.execute("call someProc('" + max100 + "')"); 
} 

此代码是非常简单的,仅作说明使用。实际上,您将使用带有占位符的准备好的语句。

也就是说,分解代码是这个问题的核心,应该是有帮助的。

0

试试这个:

// longStr is your long string 

String substring = null; 
PreparedStatement prepped = connection.prepareeStatement("call someProc(?)", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 

int maxLoop = longStr.length()/100; 
for (int i = 0; i < maxLoop; i++) { 
    substring = longStr.substring(100 * i, 100 * (i + 1)); 
    prepped.setString(1, substring); 
    ResultSet result = prepped.executeQuery(); 
} 

if (longStr.length() % 100 != 0) { 
    substring = longStr.substring(maxLoop * 100); 
    prepped.setString(1, substring); 
    ResultSet result = prepped.executeQuery(); 
} 
+0

为什么异常处理?只要做一些数学来获得循环的极​​限。 – nhahtdh 2013-05-07 04:43:08

+0

随意用你的数学编辑答案。 – hd1 2013-05-07 04:45:50

相关问题