Toon posts:

[Java]Geparametriseerde query toevoegen aan Access mdb

Pagina: 1
Acties:

Verwijderd

Topicstarter
In een Java klasse maak ik een verbinding (DSN less) met een Access database en probeer vervolgens stored procedures toe te voegen. Ziet 'r al volgt uit:

import java.sql.*;

class dbTest {

public static void main(String args[]) {

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String myDB = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\werkprojecten\\cat 01-05-02.mdb";


String qry = "SELECT * FROM CAT007";
String createSUPPL = "create table SUPPL " +
"(SUP_ID INTEGER, SUP_NAME VARCHAR(40), " +
"STREET VARCHAR(40), CITY VARCHAR(20), " +
"STATE CHAR(2), ZIP CHAR(5))";

String createProcedure = "create proc spOok(bla VarChar(3)) AS SELECT MU_CODE_ME, MU_CODE_DK FROM CAT014 WHERE MU_CODE_ME = bla";

Connection con = DriverManager.getConnection(myDB,"","");

Statement stmnt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);


stmnt.executeUpdate(createSUPPL);
stmnt.executeUpdate(createProcedure);
}

Let even niet op ontbrekende haken e.d., het gaat om de CREATE PROC regel.
Als ik geen parameter aan de query toevoeg gaat alles goed. Met parameter krijg ik de melding:
[Microsoft][ODBC Microsoft Access Driver]Syntax error or access violation.

Access violation kan het niet zijn, ik kan immers wel een tabel aanmaken en een niet geparametriseerde query. Volgens alle sites die ik heb geraadpleegd moet dit ook de te gebruiken syntax zijn.
Voor de zekerheid heb ik dezelfde syntax ook even met VB in combinatie met ADO of DAO geprobeerd. Lukt prima, ik krijg de query echter niet te zien in Access zelf (met Java code wel!?), maar als ik de QueryDefs check in de database staat de query er wel degelijk bij
Vóór je reageert: Ja, ik weet dat Access geen échte database is etc.....

Iemand ervaring hiermee?

Verwijderd

Access support geen stored procedures zover ik weet.

Verwijderd

Topicstarter
Dat weet ik. Ik spreek ook over query toevoegen. Dat kun je dus doen als ware het een echte stored procedure

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Welke SP lukt nou wel en welke niet? En lukt het maken van de SP niet, of het uitvoeren ervan?

| Toen / Nu


Verwijderd

Topicstarter
De geparametriseerde query. Wat er niet lukt is het toevoegen aan de database. Staat overigens letterlijk in mijn bericht.

  • Jaymz
  • Registratie: Januari 2000
  • Laatst online: 18:34

Jaymz

Keep on moving !

Titelchange op verzoek :)

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Verwijderd schreef op 24 december 2002 @ 23:11:
...ik krijg de query echter niet te zien in Access zelf (met Java code wel!?), maar als ik de QueryDefs check in de database staat de query er wel degelijk bij
Dat is toch zoals het hoort, procedures zijn alleen met OleDB en ADO te maken en niet te zien via de Access UI.

Maar verder heb ik ook geen ervaring met de Java/Access combi.

| Toen / Nu


Verwijderd

Topicstarter
Even voor de duidelijkheid: Access kent geen echte stored procedures, het zijn "gewone queries" Je kunt deze wel aanmaken alsof het SP's zijn. Overigens bedoelde ik met zichtbaar in Access dat als ik met Java een SP (lees query) toevoeg deze wel zichtbaar is in de Access UI, als ik dat met ADO OLEDB doe niet. Da's op z'n minst merkwaardig. Maar even terug naar de vraag:

Waarom krijg ik een foutmelding als ik wel (een) parameter(s) gebruik:

String createProcedure = "create proc spOok(bla Char(3)) " +
"AS SELECT MU_CODE_ME, MU_CODE_DK " +
"FROM CAT014 WHERE MU_CODE_ME = bla";

en niet als ik geen parameter(s) gebruik:

String createProcedure = "create proc spOok "+
"AS SELECT MU_CODE_ME, MU_CODE_DK FROM CAT014";

Verwijderd

Topicstarter
...zucht... 8)7

Hoewel Microsoft MSDN beweert dat de door mij gebruikte syntax juist is blijkt het toch net even anders te moeten:

- Allereerst moet er een spatie tussen de procedurenaam en het haakje openen van de parameterlijst staan.

- Ook mag er geen (eventuele) lengte van een parameter opgegeven worden.


Zo werkt het dus wél:

String createProcedure = "create proc spOok (bla Char) " +
"AS SELECT MU_CODE_ME, MU_CODE_DK " +
"FROM CAT014 WHERE MU_CODE_ME = bla";

Er waren niet veel reacties, maar toch bedankt voor de moeite allemaal!

Verwijderd

Verwijderd schreef op 31 December 2002 @ 16:42:
Er waren niet veel reacties, maar toch bedankt voor de moeite allemaal!
Misschien waren er wel veel "lurkers" die deze topic gevolgd hebben... /me had 'm zelfs gebookmarked! :)

Waarom 't niet werkte, vond ik ook echt ontzettend vaag... ik kon net als jij geen fout ontdekken en ben blij dat je de oplossing gevonden èn gepost hebt... _/-\o_
Pagina: 1