Connexion base access 2010

Description

Voici une classe permettant la connexion à une base Access 2010 (sans mot de passe) pour récupérer une table souhaitée dans un Vector de Vector d' Object.
Attention :
- Le programme doit être compiler en 32 bit car le driver ODBC pour Access 2010 n'existe que en 32 bit !
- Vous devez avoir installer le driver ODBC (recherchez "Moteur de base de données Microsoft Access 2010 redistribuable" sur internet)

Ceci est mon premier post de code, n'hésitez pas à me donner votre avis dessus...

Source / Exemple :


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.util.Vector;

public class AccessTable{
	private Vector<Vector<Object>> vvs_table = new Vector<Vector<Object>>(); // Tableau contenant la Table après un getTableInVector()
	private String path; // Chemin vers ma table Access (ne pas oublier les double back-slash "\\" ex: C:\\repertoire\\matable.accdb)
	private String table; // Nom de la Table
	private Connection conn;
	private Statement st;
	private boolean etap1 = false;  
	private boolean etap2 = false;  
	private boolean etap3 = false;
	
	/* Ces booleans me servent à vérifier que l'objet AccessTable est correctement utilisé

  • pour ne pas lancer une connexion sans avoir donner un chemin d'accès et une table
  • ou pour ne pas déconnecté si l'on ne sait pas connecté d'abord...
  • /
public AccessTable() throws SQLException { } public AccessTable(String pathtodb) { this.path = pathtodb; this.etap1 = true; } public AccessTable(String pathtodb, String tablename) { this.path = pathtodb; this.table = tablename; this.etap1 = true; this.etap2 = true; } public void setPathToDataBase(String s) throws Throwable { if(!this.etap3) { this.path = s; this.etap1 = true; } else { throw new Exception("AccessTable en cours d'utilisation"); } } public void setTableName(String s) throws Throwable { if(!this.etap3) { this.table = s; this.etap2 = true; } else { throw new Exception("AccessTable en cours d'utilisation"); } } public void connection() throws Throwable //Initialise la connexion { if( this.etap1 && this.etap2) { this.conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+this.path); this.st = this.conn.createStatement(); this.etap3 = true; } else { throw new Exception("AccessTable non configuré !"); } } public Vector<Vector<Object>> getTableInVector() throws Throwable // Récupération de la Table dans un Vector de Vector d'objet { if (this.etap3) { ResultSet rs = this.st.executeQuery("SELECT * FROM "+this.table); for(int i = 0; rs.next();i++) { Vector<Object> vs = new Vector<Object>(); for (int j = 1 ; j<= rs.getMetaData().getColumnCount();j++) { vs.add(rs.getObject(j)); } this.vvs_table.add(vs); } } else { throw new Exception("AccessTable non connecté"); } return this.vvs_table; } public void disconnection() throws Throwable // déconnexion { if (this.etap3) { this.st.close(); this.conn.close(); this.etap3 = false; } else { throw new Exception("AccessTable non connecté"); } } public static void main(String[] arg0) throws Throwable { Scanner sc = new Scanner(System.in); System.out.println("Chemin vers la DataBase ? (ex : C:\\\\directory\\\\myDataBase.accdb)"); String p = sc.next(); System.out.println("Nom de la table ?"); String t = sc.next(); AccessTable at = new AccessTable(); at.setPathToDataBase(p); at.setTableName(t); at.connection(); Vector<Vector<Object>> vvo_test = at.getTableInVector(); at.disconnection(); for(Vector<Object> vo : vvo_test) { System.out.println(vo.toString()); } } }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.