Toon posts:

[JAVA] Driver error bij uitvoeren Stored Proc. met cursor

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dag Tweakers,

Ik ben in mijn applicatie de huidige query aan het vervangen door Stored Procedures. Dit is me al gelukt voor 2 update procedures alleen nu wil ik ook een SELECT procedure maken en loop ik helemaal vast.

na heel wat gepuzzel op internet is me gelukt de volgende procedure op te stellen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE PROCEDURE [dbo].[getUsers] AS

DECLARE curUser CURSOR FOR
 SELECT * FROM tbl_users

OPEN curUser

FETCH NEXT FROM curUser

WHILE @@FETCH_STATUS = 0

    BEGIN
        FETCH NEXT FROM curUser
    END

CLOSE curUser
DEALLOCATE curUser
GO


om hem aan te roepen in java heb ik de volgende methode geschreven

code:
1
2
3
4
5
6
7
8
9
10
11
public void getUsers()throws SQLException
 {
   proc = connect.prepareCall("{call dbo.getUsers()}");
   proc.registerOutParameter(1,Types.OTHER);
   proc.execute();
   ResultSet rs=(ResultSet) proc.getObject(1);
   while(rs.next())
   {
     System.out.println(""+rs.getInt(1));
   }
 }



Nu krijg ik de foutmelding
SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]The specified SQL type is not supported by this driver.

Ik heb vermoeden dat er iets fout is op de manier waarop ik de procudure aanroep, alleen ik kom er echt niet meer uit op internet de meeste voorbeelden die ik heb kunnen vinden maken direct gebruik van update query

Weten jullie waar het probleem kan zitten of waar ik een oplossing kan vinden

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 12-02 12:22
Ik zou eens proberen om de select statement te vereenvoudigen door er eerst is een enkele kolom in te selecteren van een eenvoudig type, een varchar of een integer ofzo.

Het klinkt alsof je iets met blobs of clobs wilt doen op een manier die niet ondersteund wordt door de SQL driver. Het helpt om te weten welk kolom type het om gaat, dat maakt gericht zoeken een stuk eenvoudiger voor je.

Edit:
Er is zat over te vinden.

http://www.google.nl/sear...ot+supported%22+sqlserver

[ Voor 26% gewijzigd door The - DDD op 06-09-2006 09:59 ]


  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10-2025
dit kan nooit werken:

code:
1
2
proc = connect.prepareCall("{call dbo.getUsers()}");
   proc.registerOutParameter(1,Types.OTHER);


probeer:
code:
1
2
proc = connect.prepareCall("{? = call dbo.getUsers()}");
   proc.registerOutParameter(1,Types.OTHER);

  • Standeman
  • Registratie: November 2000
  • Laatst online: 19:52

Standeman

Prutser 1e klasse

Wat is het kolom type in je database van die eerste kolom? Is dat een standaard int of een meer exotisch type?

Het kan namelijk zijn dat de driver inderdaad het type van de kolom in je DB gewoon niet ondersteund.

The ships hung in the sky in much the same way that bricks don’t.


Verwijderd

Topicstarter
Ik heb het probleem inmiddels kunnen oplossen door geen gebruik te maken van een cursor aangezien ik die niet persee nodig heb. Ik heb nu een gewonen resultset teruggegeven.

Het probleem zit hem volgens mij in de driver die ik gebruik om de connection te maken. Volgens mij ondersteund deze het type Other niet zou dat kunnen ?

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10-2025
other is standaard van java.net.Types, dus lijkt me niet

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 12-02 12:22
Verwijderd schreef op woensdag 06 september 2006 @ 10:59:
Ik heb het probleem inmiddels kunnen oplossen door geen gebruik te maken van een cursor aangezien ik die niet persee nodig heb. Ik heb nu een gewonen resultset teruggegeven.

Het probleem zit hem volgens mij in de driver die ik gebruik om de connection te maken. Volgens mij ondersteund deze het type Other niet zou dat kunnen ?
Mooie logica ook weer.

Ik heb A verwijdert, dus het zal wel door B komen. 8)7

Verwijderd

Topicstarter
The - DDD schreef op vrijdag 08 september 2006 @ 13:54:
[...]


Mooie logica ook weer.

Ik heb A verwijdert, dus het zal wel door B komen. 8)7
Niet helemaal wat ik zeg. Ik heb een Probleem A ik heb dit opgelost met oplossing B ik vermoed echter dat het probleem bij A komt doordat er een type gebruik wordt wat door de driver niet ondersteund wordt. Dit omdat het gebruikt van TYPE.Other eigenlijk voor orcale databases is. Kortom volgens mij kan ik niet zomaar een cursor returnen na java omdat de driver het niet ondersteund.
Pagina: 1