2016-04-07 13 views
0

'dan sonra ResultSet'i CallableStatment'tan nasıl alırım Java'da bir mağaza yordamı yürütüyorum. Yordamlardan biri birden çok satır döndürür. I çalıştırmak kullanarak çalıştıExecuteUpdate()

int haveResults = Param.callableStatement.executeUpdate(); 
System.out.println(haveResults); 
if (haveResults > 0) { 
    System.out.println("I have results"); //This statement is printed 
    ResultSet rs = Param.callableStatement.getResultSet(); 
    while (rs.next()) { //This is where I am getting error:NullPointerException 
     //If I comment 'while(rs.next())' then code is giving output but then it can't handle multiple rows 
     itr1 = listOutParam.iterator(); 
     while (itr1.hasNext()) { 
      Object obj = null; 
      obj = ParameterGetter.getParameter(itr1.next().toString(), counter1); 
      list.add(obj); 
      counter1++; 
     } 
     System.out.println(list.toString()); 
     list1.add(list); 
     counter1 = counter2; 
    } 
} 
} 

(), ancak o zaman eğer prosedür başarıyla yürütme değildir gösteren yanlış değeri dönüyor.

+0

ait execute() kullanmaya gerek bir CallableStatement bir ResultSet almak istiyorsanız iken (rs.hasNext()) {' yerine 'arasında iken (rs.next()) { '. Tıpkı ikinci saniyede yaptığınız gibi, döngü – jhamon

+1

ResultSet, hasNext yöntemine sahip değildir. – Abhishek

+0

Bağlantılı kopyada açıklandığı gibi, 'execute' (veya 'getMoreResults') öğesinden bir' false 'sonucu hiçbir sonuç olmadığı anlamına gelmez; sadece geçerli sonucun bir sonuç kümesi değil, bir güncelleme sayısı olduğu anlamına gelir. Bağlantılı sorudaki yaklaşımı kullanmak yerine, saklı yordamınızın ilk satırına 'SET NOCOUNT ON' eklemeyi de düşünebilirsiniz. –

cevap

1

Eğer `yapmak yerine executeUpdate()

if (Param.callableStatement.execute()) { 
    ResultSet rs = Param.callableStatement.getResultSet(); 
    ... 
} 
+0

execute() kullanmayı denedim, ancak daha sonra işlemin başarılı olmadığını gösteren yanlış bir değer döndürüyorsa. – Abhishek

+0

ResultSet almak için execute() yöntemini kullanmak mümkün mü? – Abhishek

+0

@Abhishek 'execute', birden çok sonuç döndürebilir. Execute() kullanmadan – wero

İlgili konular