Toon posts:

[Java] Stored Procedure - MS SQL Server 2000

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi allemaal,

Onze projectgroep heeft een beetje een probleem met Stored Procedures in MS SQL Server 2000. Ik zal het ff uitleggen.

Wat is de bedoeling?

De bedoeling is om een recordset te vergaren door middel van het aanroepen van een stored procedure op een server.
Client (Java) -> Roept Stored Procedure aan op server -> SQL Server run Stored Procedure -> geef resultset aan client terug met uitkomst Stored procedure.

Wat hebben we?

De volgende (correct werkende) Stored Procedure:
code:
1
2
3
4
5
6
7
CREATE PROCEDURE getProducts AS
BEGIN
 Select Product.*, Categorie.Naam as Categorie, Merk.Naam as Merk 
 From Product 
 Inner Join Categorie On Product.Categorie_id = Categorie.Categorie_id 
 Inner Join Merk On Product.Merk_id = Merk.Merk_id
END


En de volgende Java code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public ResultSet excuteStoredProcedure( Connection connection, String storedProcedureName )
{
   ResultSet resultSet =null;
   CallableStatement callableStatement = null;

   try
   {
//      callableStatement = connection.prepareCall("{call " + storedProcedureName + "}");
        callableStatement = connection.prepareCall("{call getProducts}");
            
        if ( callableStatement.execute() )
        {
                resultSet = callableStatement.getResultSet();
        }
    }
    catch (SQLException e) { System.out.println("Whelp er gaat iets goed fout: \n" + e }

    return resultSet;
}


Andere manier die geprobeerd is:

code:
1
resultSet = callableStatement.getResultSet();

Deze regel is vervangen door:
code:
1
resultSet = callableStatement.executeQuery();


Java Foutmelding:
Geen!
Pas op het moment dat we de resultset willen gaan gebruiken krijgen we een Nullpointer exception. Helaas logisch, want de resultset is namelijk niet gevuld. Daar zit het probleem nu juist. De resultset word niet gevuld.


Overige info:
- Google -> geen werkend resultaat :(
- java.sun.com -> search in forums en training -> geen bruikbaar resultaat :(
- Stored Procedure is getest en die werkt.
- Vermoeden wat er fout gaat: de call getProducts. Aangezien dit:
code:
1
2
3
4
5
6
callableStatement = connection.prepareCall("{call dit zou niet moeten werken}");
            
        if ( callableStatement.execute() )
        {
// Java komt hier, ondanks een aanroep die niet zou moeten werken. 
        }

volgens java ook nogsteeds werkt.

Iemand enig idee wat we fout doen???

Sorry voor het lange bericht, maar hopelijk is het nu wel duidelijk.

[ Voor 8% gewijzigd door Verwijderd op 22-12-2002 13:50 . Reden: Wil niet vervelend over komen ]


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Hoe heb je de connectie gemaakt? ODBC neem ik aan?

Kijk dan ook eens naar de JDBC-Driver voor SQLServer.
Kun je vinden op ms site.
http://msdn.microsoft.com.../779/msdncompositedoc.xml

Suc6

Wat niet kan is nog nooit gebeurd


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Heb je al geprobeerd om GetProducts in de Query Analyser aan te roepen?
Om te testen of dat wel goed gaat?