Avatar billede woodbase Nybegynder
02. november 2005 - 20:59 Der er 9 kommentarer og
1 løsning

Microsoft Access queries i Java

Jeg har hørt at man kan hente forespørgsler, der er lavet i Access ud med Java. Men hvordan?
Avatar billede woodbase Nybegynder
02. november 2005 - 21:00 #1
Jeg kan vidst godt få fat i forespørgslen. Men ikke rigtig navnene i RecordSet'et
Avatar billede arne_v Ekspert
02. november 2005 - 21:05 #2
hvad gør du og hvad virker ikke ?
Avatar billede arne_v Ekspert
02. november 2005 - 21:06 #3
eksempel som virker:

package october;

import java.sql.*;

public class AccessQuery {
    public static void main(String[] args) throws Exception {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\Databases\\MSAccess\\Test.mdb;");
        CallableStatement cstmt = con.prepareCall("{CALL Query5}");
        cstmt.execute();
        ResultSet rs = cstmt.getResultSet();
        while(rs.next()) {
            System.out.println(rs.getInt(1) + " " + rs.getString(2));
        }
        cstmt.close();
        con.close();
    }
}
Avatar billede woodbase Nybegynder
03. november 2005 - 09:58 #4
ok... jeg anvender ikke et callablestatement, blot et statement.

Så laver jeg en sql: "SELECT * FROM <forespørgsel> WHERE <navnet på kriteriet i access> = " + <en varibel>

Med den får jeg at vide at jeg mangler en parameter, det er tilsyneladende fordi den ikke kan finde det ønskede kriterie.

Så prøvede jeg at erstatte det med tabel.kolonne = variabel... Fejl: Kan referer til flere...
Avatar billede arne_v Ekspert
03. november 2005 - 10:41 #5
package october;

import java.sql.*;

public class AccessQueryAgain {
    public static void main(String[] args) throws Exception {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\Databases\\MSAccess\\Test.mdb;");
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM Query5");
        while(rs.next()) {
            System.out.println(rs.getInt(1) + " " + rs.getString(2));
        }
        rs.close();
        stmt.close();
        con.close();
    }
}

virker også

men jeg kan forstå at det er en af de queries som prompter for værd ?!?!

det vil jeg lige prøve også
Avatar billede woodbase Nybegynder
03. november 2005 - 11:15 #6
ja jeg skal finde en sag ud fra et bestemt sagsnummer

grunden til at jeg ikke bare laver en simpel sql er at den skal joine fra 3 forskellige tabeller. og bruges i en hovedopgave ;-)
Avatar billede arne_v Ekspert
03. november 2005 - 12:02 #7
jeg tror stadig ikke at det er den optimal emåde at gøre det på

men følgende ser du til at virke:

package october;

import java.sql.*;

public class AccessQueryPrompt {
    public static void main(String[] args) throws Exception {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection("jdbc:odbc:;Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\Databases\\MSAccess\\Test.mdb;");
        CallableStatement cstmt = con.prepareCall("{CALL Query6 ?}");
        cstmt.setInt(1, 2);
        cstmt.execute();
        ResultSet rs = cstmt.getResultSet();
        while(rs.next()) {
            System.out.println(rs.getInt(1) + " " + rs.getString(2));
        }
        rs.close();
        cstmt.close();
        con.close();
    }
}
Avatar billede arne_v Ekspert
03. november 2005 - 12:03 #8
Query5:

SELECT *
FROM T1;

Query6:

SELECT *
FROM T1
WHERE F1>[MAXF1];
Avatar billede woodbase Nybegynder
20. december 2005 - 10:37 #9
svar mangler Arne
Avatar billede arne_v Ekspert
20. december 2005 - 10:41 #10
kommer her
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