Toon posts:

[JAVA] java.sql.SQLException: General error

Pagina: 1
Acties:
  • 412 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik krijg steeds deze error maar ik kan maar niet vinden wat m'n fout is.

Java: database
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public boolean databaseGeefResourceVrij(String omschrijving) {
        String sql = "UPDATE Artikel SET In_Gebruik = 0 WHERE Omschrijving = '" + omschrijving + "'";
        boolean validatie = false;

        try {
            Statement statement = con.createStatement ();
            statement.executeUpdate(sql);
            validatie = true;
        }
        catch (Exception ex) {
            System.out.println("ERROR");
            System.out.println(ex);
        }
        
        return validatie;
        
    }


En het rare is dat wanneer ik In_Gebruik = -1 ipv In_Gebruik = -1 gebruik dat hij dit wel doet en wanneer ik de sql in Access plak voert hij hem ook uit :/

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Wat je IMO beter zou kunnen doen is geen hoofdletters gebruiken in je tabelnamen / velden. Verder geef je ook geen foutmelding mee. Alleen in je titel staat sumier iets.

Graag iets meer info.

Daarnaast zou je je Omschrijving (welke ik liever als omschrijving zie) tussen % % kunnen zetten. Misschien vind hij geen match en returnt dus een error...

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
toaomatis schreef op woensdag 15 april 2009 @ 10:48:
Wat je IMO beter zou kunnen doen is geen hoofdletters gebruiken in je tabelnamen / velden. Verder geef je ook geen foutmelding mee. Alleen in je titel staat sumier iets.

Graag iets meer info.

Daarnaast zou je je Omschrijving (welke ik liever als omschrijving zie) tussen % % kunnen zetten. Misschien vind hij geen match en returnt dus een error...
M'n titel is m'n error :P
Maar zoals ik al zei is het echt raar want ik heb nog een andere methode waar In_gebruik = -1 en daar wil hij het wel doen. Beiden zijn identiek behalve die In_Gebruik :S

edit: als ik omschrijving tussen %% zet heb ik nog altijd hetzelfde :'(

[ Voor 5% gewijzigd door Verwijderd op 15-04-2009 11:01 ]


Acties:
  • 0 Henk 'm!

  • bat266
  • Registratie: Februari 2004
  • Laatst online: 24-08 06:41
Even een sideway, voor een meer secure oplossing die sqlinjection voorkomt moet je eens kijken naar preparedstatements.

Better to remain silent and be thought a fool then to speak out and remove all doubt.


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 00:16
toaomatis schreef op woensdag 15 april 2009 @ 10:48:Wat je IMO beter zou kunnen doen is geen hoofdletters gebruiken in je tabelnamen / velden.
Dat is meer een persoonlijke voorkeur, heeft niets met de foutmelding te maken.
Wat is de omschrijving van het artikel dat je wilt updaten precies?
bat266 schreef op woensdag 15 april 2009 @ 11:16:
Even een sideway, voor een meer secure oplossing die sqlinjection voorkomt moet je eens kijken naar preparedstatements.
Helemaal mee eens.

[ Voor 98% gewijzigd door sig69 op 15-04-2009 11:32 ]

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sig69 schreef op woensdag 15 april 2009 @ 11:30:
[...]

Dat is meer een persoonlijke voorkeur, heeft niets met de foutmelding te maken.
Wat is de omschrijving van het artikel dat je wilt updaten precies?
De omschrijving is iets als Pooltafel 1 of Snookertafel 1 ofzo...

Acties:
  • 0 Henk 'm!

  • Dnomaid
  • Registratie: Augustus 2003
  • Laatst online: 15-09 16:02
Als je ipv "System.out.println(ex); " nu eens "ex.printStacktrace()" probeert, word je dan niet wijzer van de stacktrace?

Post de trace hier ook maar, da's interessanter dan een "general error".

Acties:
  • 0 Henk 'm!

  • BBrunekreeft
  • Registratie: Mei 2004
  • Laatst online: 24-09 15:17

BBrunekreeft

Dus...

En misschien ergens een System.out.println(sql); om te kijken wat je sql statement nu precies is. Wie weet staat er wel ergens een quote in je omschrijving...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Met Prepared Statements krijg ik dezelfde error :S

en de error met die ex.printStackTrace()

Java: error
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
java.sql.SQLException: General error
    at sun.jdbc.odbc.JdbcOdbc.throwGenericSQLException(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(Unknown Source)
    at database.Database.databaseGeefResourceVrij(Database.java:631)
    at domein.ArtikelControle.GeefResourceVrij(ArtikelControle.java:31)
    at cui.Resources.GeefResourceVrij(Resources.java:220)
    at cui.Navigatie.keuzeMenu(Navigatie.java:240)
    at cui.Navigatie.navigatieUitbater(Navigatie.java:75)
    at cui.Navigatie.bepalenGebruikerNiveau(Navigatie.java:25)
    at cui.Resources.GeefResourceVrij(Resources.java:223)
    at cui.Navigatie.keuzeMenu(Navigatie.java:240)
    at cui.Navigatie.navigatieUitbater(Navigatie.java:75)
    at cui.Navigatie.bepalenGebruikerNiveau(Navigatie.java:25)
    at cui.Rekeningen.selecteerRekening(Rekeningen.java:111)
    at cui.Navigatie.keuzeMenu(Navigatie.java:182)
    at cui.Navigatie.navigatieUitbater(Navigatie.java:75)
    at cui.Navigatie.bepalenGebruikerNiveau(Navigatie.java:25)
    at cui.Klanten.klantenLijst(Klanten.java:80)
    at cui.Navigatie.keuzeMenu(Navigatie.java:178)
    at cui.Navigatie.navigatieUitbater(Navigatie.java:75)
    at cui.Navigatie.bepalenGebruikerNiveau(Navigatie.java:25)
    at cui.Aanmelden.Launch(Aanmelden.java:65)
    at StartUp.main(StartUp.java:17)


edit:
BBrunekreeft schreef op woensdag 15 april 2009 @ 11:39:
En misschien ergens een System.out.println(sql); om te kijken wat je sql statement nu precies is. Wie weet staat er wel ergens een quote in je omschrijving...
M'n sql is juist want als ik hem in Access plak voert hij hem wel uit :\

[ Voor 10% gewijzigd door Verwijderd op 15-04-2009 11:44 ]


Acties:
  • 0 Henk 'm!

  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

nl in code :x

Wat is In_Gebruik voor veld?
Een bitfield [1|0] ? (oa mssql)
Een boolean [true|!0|false|0] ? (oa access)

Access gebruikt geloof ik een boolean voor bitvelden, terwijl mssql een bit-waarde (1 of 0) verwacht.
Dan kan het heel goed dat mssql die -1 gewoon niet pakt, en je driver geen betere melding geeft ;)

Tegen wat voor db zit je te proggen?

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
J2pc schreef op woensdag 15 april 2009 @ 11:42:
nl in code :x

Wat is In_Gebruik voor veld?
Een bitfield [1|0] ? (oa mssql)
Een boolean [true|!0|false|0] ? (oa access)

Access gebruikt geloof ik een boolean voor bitvelden, terwijl mssql een bit-waarde (1 of 0) verwacht.
Dan kan het heel goed dat mssql die -1 gewoon niet pakt, en je driver geen betere melding geeft ;)

Tegen wat voor db zit je te proggen?
Ik zi tmet MS Access bezig en het veld is een Ja/Nee veld. Dus ja = -1 en nee = 0.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Het gaat al mis bij createStatement. Is je connectie nog wel open?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
CodeCaster schreef op woensdag 15 april 2009 @ 11:46:
Het gaat al mis bij createStatement. Is je connectie nog wel open?
Ja, dit is m'n volledig stukje code ivm de database:

Java: db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    public boolean databaseStartGeefResourceVrij(String omschrijving) {
        
        makeConnection();
        boolean validatie = databaseGeefResourceVrij(omschrijving);
        closeConnection();
        
        return validatie;
        
    }
    
    public boolean databaseGeefResourceVrij(String omschrijving) {
        String sql = "UPDATE Artikel SET In_Gebruik = 0 WHERE Omschrijving = '" + omschrijving + "'";
        boolean validatie = false;

        try {
            System.out.println(sql);
            Statement statement = con.createStatement ();
            statement.executeUpdate(sql);
            validatie = true;
        }
        catch (Exception ex) {
            System.out.println("ERROR");
            ex.printStackTrace();
        }
        
        return validatie;
        
        /*boolean validatie = false;
        int update = 0;
        
        try {
            PreparedStatement updateResource = con.prepareStatement("UPDATE Artikel SET In_Gebruik = ? WHERE Omschrijving = ?");
            updateResource.setInt(1, 0); 
            updateResource.setString(2, omschrijving); 
            update = updateResource.executeUpdate();
        }
        catch (Exception ex) {
            System.out.println("ERROR");
            System.out.println(ex);
        }
        
        if(update > 0)
            validatie = true;
        
        return validatie;*/
        
    }


Ik doe echt juist hetzelfde als bij ZetResourceBezet (dus In_Gebruik = -1) behalve dat het hier In_Gebruik = 0 is.

Acties:
  • 0 Henk 'm!

  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

Verwijderd schreef op woensdag 15 april 2009 @ 11:45:
[...]


Ik zi tmet MS Access bezig en het veld is een Ja/Nee veld. Dus ja = -1 en nee = 0.
check ff je TS, er staat iets van 'als ik -1 ipv -1 gebruik gaat 't wel'.
Ik ga er even vanuit dat -1 wel werkt, maar 0 niet.

heb zelf niet zoveel ervaring met access, maar ok.

probeer voor de grap eens true of false erin te schieten, of een 1.
of nog mooier, via de prepared statement geen setInt, maar iets van setBool en dan een true of false.

[ Voor 10% gewijzigd door J2pc op 15-04-2009 11:54 ]

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik zou eens kijken naar: Debuggen: Hoe doe ik dat?

Verder willen we graag dat je in het vervolg wat meer informatie in je topic geeft. Je heb nu in je TS niet eens aangegeven wat precies de exception is en waar die optreed.

Als ik je Topic Titel in google gooi [google=java.sql.SQLException: General error] vind ik overigens in het 2e linkje al de reden van de exception.

Aangezien het al mis gaat bij het creeeren van het statement kan het natuurlijk nooit iets met de query zelf te maken hebben, en moet je dus proberen te achterhalen waarom de connection niet goed is.

We verwachten hier op GoT wel enige inzet van de TS wat dat betreft. Zie ook PRG beleid en Quickstart

[ Voor 12% gewijzigd door Woy op 15-04-2009 11:57 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1

Dit topic is gesloten.