Avatar billede martinhrj Nybegynder
05. december 2001 - 14:40 Der er 5 kommentarer og
1 løsning

SQLException

Jeg har lige ændret en masse statements, til prepared statements, i mit Java program. Når jeg så prøver at lave en executeQuery(), får jeg følgende exception:
java.sql.SQLException ORA-01006: tilknytningsvariabel findes ikke.

Mit prepared statement ser således ud: oracle.jdbc.driver.OraclePreparedStatement@13144ff.

Og sidst men ikke mindst, den metode jeg bruger:
public ResultSet executeQuery(PreparedStatement stm)
{
  try
  {
    ResultSet r = stm.executeQuery();
    return r;
  }catch(SQLException e)
  {
    System.out.println(stm + \" \" + e);
  }
  return null;
}

Kan det være fordi der skal en speciel jdbc-driver til Oracle, når jeg bruger prepared statements? Eller hvad????

På forhånd tak.

//Martin
Avatar billede disky Nybegynder
05. december 2001 - 14:43 #1
lav en e.printStackTrace() inden i din catch

og fortæl hvad den siger.

Jeg mener ikke man skal bruge en speciel jdbc driver til prepared statements
Avatar billede martinhrj Nybegynder
05. december 2001 - 14:56 #2
Vær så god at prøv...

java.sql.SQLException: ORA-01006: tilknytningsvariabel findes ikke


    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)

    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)

    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)

    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)

    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:643)

    at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1674)

    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1870)

    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:363)

    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:314)

    at DBAdapter.executeQuery(DBAdapter.java:53)

    at Kunde.getKunde(Kunde.java:32)

    at SQLController.getCostumerData(SQLController.java:23)

    at Private.<init>(Private.java:8)

    at GUIAdapter.findPerson(GUIAdapter.java:7)

    at Transaktioner.Enter(Transaktioner.java:187)

    at Transaktioner.access$000(Transaktioner.java:16)

    at Transaktioner$1.keyPressed(Transaktioner.java:58)

    at java.awt.Component.processKeyEvent(Component.java:3679)

    at javax.swing.JComponent.processKeyEvent(JComponent.java:2092)

    at java.awt.Component.processEvent(Component.java:3555)

    at java.awt.Container.processEvent(Container.java:1164)

    at java.awt.Component.dispatchEventImpl(Component.java:2595)

    at java.awt.Container.dispatchEventImpl(Container.java:1213)

    at java.awt.Component.dispatchEvent(Component.java:2499)

    at java.awt.LightweightDispatcher.processKeyEvent(Container.java:2155)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2135)

    at java.awt.Container.dispatchEventImpl(Container.java:1200)

    at java.awt.Window.dispatchEventImpl(Window.java:912)

    at java.awt.Component.dispatchEvent(Component.java:2499)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)

    at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)
Avatar billede martinhrj Nybegynder
05. december 2001 - 17:36 #3
Så kan I godt indstille søgningen alle sammen... Jeg har fundet løsningen. Jeg var \"helt\" galt på den. Det var fordi, der var kommet et par \'?\' udenom spørgsmålstegnet... Det var jo ikke til at vide!
Men tak for forsøget!

Avatar billede martinhrj Nybegynder
05. december 2001 - 17:39 #4
Hvordan får jeg nu \"accepteret\" på dette spørgsmål, hvis jeg selv fandt ud af svaret, og gerne vil spare lidt på mine point?
Avatar billede disky Nybegynder
06. december 2001 - 08:49 #5
du svarer selv, og accepterer det svar.

Hvad var løsningen ?
Avatar billede martinhrj Nybegynder
06. december 2001 - 09:55 #6
Jeg havde en sætning der så således ud:
        PreparedStatement getKunde = db.getCon().prepareStatement(\"SELECT * FROM DANBANK.KUNDE WHERE CPR=\'?\'\");
Og den skulle istedet se sådan ud:
        PreparedStatement getKunde = db.getCon().prepareStatement(\"SELECT * FROM DANBANK.KUNDE WHERE CPR=?\");

Næsten ingen forskel, men alligevel nok!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester