Copiez le code comme suit :
paquet com.groundhog.codingmouse ;
importer java.sql.Connection ;
importer java.sql.DriverManager ;
importer java.sql.PreparedStatement ;
importer java.sql.ResultSet ;
importer java.sql.SQLException ;
/**
* Cours de gestion de bases de données
* @auteur CodingMouse
*2009.2.20
*/
classe finale publique DBManager {
/**
* Objet de connexion à la base de données
*/
Connexion privée dbConnection = null ;
/**
* Objet d'exécution de commande de base de données
*/
private PreparedStatement preStatement = null ;
/**
* Objet de jeu de résultats
*/
jeu de résultats privé rsSet = null ;
/**
* Numéro de version du pilote de base de données
*/
chaîne statique privée driverVersion = null ;
/**
* Constantes de nom d'utilisateur et de mot de passe de connexion au serveur de base de données (les valeurs par défaut sont « sa »)
*/
chaîne statique privée databaseUser = "sa" ;
chaîne statique privée databasePassword = "sa" ;
/**
* Constante de chaîne de nom de classe complète du pilote de base de données
*/
Chaîne finale statique privée
DRIVER_CLASS_SQLSERVER2000 =
"com.microsoft.jdbc.sqlserver.SQLServerDriver" ;
Connexion directe au serveur 2000
Chaîne finale statique privée
DRIVER_CLASS_SQLSERVER2005 =
"com.microsoft.sqlserver.jdbc.SQLServerDriver" ;
Connexion directe au serveur 2005
Chaîne finale statique privée
DRIVER_CLASS_BRIDGECONNECT = "sun.jdbc.odbc.JdbcOdbcDriver";
// Connexion pont ODBC
/**
* Constantes de chaîne de connexion à la base de données
*/
Chaîne finale statique privée
DATABASE_URL_SQLSERVER2000 =
"jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=stuD
B"; // Connexion directe à SQL Server 2000
Chaîne finale statique privée
DATABASE_URL_SQLSERVER2005 =
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName=stuDB";
// Connexion directe à SQL Server 2005
Chaîne finale statique privée
DATABASE_URL_BRIDGECONNECT = "jdbc:odbc:stuDBSource";
// Connexion pont ODBC
/**
* Définir les variables statiques d'instance de la classe elle-même (applicable aux applications en mode singleton [ware])
*/
DBManager statique privé connectionManager = null ;
/**
* Construction par défaut privatisée (s'applique aux applications en mode singleton [ware] pour empêcher les classes d'être instanciées directement à l'aide du nouveau mot-clé)
*/
privateDBManager() {
super();
}
/**
* Méthode pour obtenir une instance de classe de gestion de connexion à une base de données (application du mode singleton [ware])
* @param version Numéro de version du pilote de base de données, valeur : (version =
version 2000 = version 2005 = odbc)
* Nom d'utilisateur de connexion au serveur de base de données utilisateur @param
* Mot de passe de connexion au serveur de base de données @param password
* Objet de gestion des connexions à la base de données @return
* @throws Exception Exception d'erreur de paramètre
*/
DBManager statique public getInstance (
Version chaîne,
Utilisateur de chaîne,
Mot de passe de chaîne)
lance une exception {
si (!(version == "2000" || version == "2005"
|| version == "odbc")) {
throw new Exception("Le numéro de version du pilote de base de données est incorrect, la valeur ne peut être que "2000/2005/odbc"!");
}
//Enregistre le numéro de version du pilote de base de données
version du pilote = version ;
if (user == null || user.equals("")) {
throw new Exception ("Le nom d'utilisateur de connexion au serveur de base de données ne peut pas être vide!");
}
//Enregistrer le nom d'utilisateur et le mot de passe de connexion au serveur de base de données
base de donnéesUtilisateur = utilisateur ;
base de donnéesPassword = mot de passe ;
// Applique le modèle singleton [ware] pour garantir que la classe elle-même n'a qu'une seule instance
si (connectionManager == null) {
connectionManager = new DBManager();
}
// Renvoie une instance de la classe elle-même
retourner le gestionnaire de connexions ;
}
/**
* Méthode pour obtenir une connexion à la base de données
* Objet de connexion à la base de données @return
*/
Connexion privée getConnection() {
essayer {
Classe.forName(
Version du pilote ==
"2000"
?
DRIVER_CLASS_SQLSERVER2000
: (version du pilote ==
"2005"
?
DRIVER_CLASS_SQLSERVER2005
:
DRIVER_CLASS_BRIDGECONNECT));
ceci.dbConnection =
DriverManager.getConnection(
Version du pilote ==
"2000"
?
DATABASE_URL_SQLSERVER2000
: (version du pilote ==
"2005"
?
DATABASE_URL_SQLSERVER2005
:
DATABASE_URL_BRIDGECONNECT),
Utilisateur de base de données,
base de donnéesMot de passe);
} catch (ClassNotFoundException ex) {
System.err.println("SQL Server introuvable
" + driverVersion + "Classe de pilote de base de données : " + ex.getMessage());
// Afficher les informations sur la pile d'exceptions sur la console
// ex.printStackTrace();
} catch (Exception ex) {
System.err.println("Obtenir une erreur de connexion à la base de données : " + ex.getMessage());
// Afficher les informations sur la pile d'exceptions sur la console
// ex.printStackTrace();
}
// Renvoie l'objet de connexion à la base de données
renvoie this.dbConnection ;
}
/**
* Méthode pour obtenir un objet d'exécution de commande de base de données
* @param sql Chaîne d'instruction d'assemblage de commande SQL à exécuter
* Objet d'exécution de commande de base de données @return
*/
déclaration préparée privée getPreparedStatement
(Chaîne SQL) {
essayer {
//Créer un objet d'exécution de commande de base de données basé sur l'objet de connexion à la base de données obtenu
this.preStatement = getConnection
().prepareStatement(sql);
} catch (Exception ex) {
System.err.println("Erreur lors de l'obtention de l'objet d'exécution de commande de base de données : " + ex.getMessage());
// Afficher les informations sur la pile d'exceptions sur la console
// ex.printStackTrace();
}
// Renvoie l'objet d'exécution de la commande de base de données
renvoie this.preStatement ;
}
/**
* Exécuter l'instruction de mise à jour (Insérer | Mettre à jour | Supprimer)
* @param sql Chaîne d'instruction d'assemblage de commande SQL à exécuter
* @renvoie le nombre de lignes concernées
*/
public intexecuteUpdate(String sql){
essayer {
// Vide le contenu original de l'objet jeu de résultats
this.rsSet = null ;
//Exécute l'instruction et renvoie le nombre de lignes affectées
renvoyer this.getPreparedStatement
(sql).executeUpdate();
} catch (SQLException e) {
System.err.println("Erreur de mise à jour des données :" +
e.getMessage());
renvoie 0 ;
}enfin{
//Ferme les ressources de connexion à la base de données
closeDBResource();
}
}
/**
* Exécuter l'instruction de requête (Sélectionner)
* @param sql Chaîne d'instruction d'assemblage de commande SQL à exécuter
* Objet de jeu de résultats @return après requête
*/
public ResultSetexecuteQuery(String sql){
essayer {
// Vide le contenu original de l'objet jeu de résultats
this.rsSet = null ;
//Exécuter l'instruction SQL pour obtenir le jeu de résultats
ceci.rsSet =
this.getPreparedStatement(sql).executeQuery();
} catch (SQLException e) {
System.err.println("Erreur de données de requête :" +
e.getMessage());
}
// Renvoie l'objet du jeu de résultats
renvoie this.rsSet ;
}
/**
* Obtenez le nombre d'enregistrements dans le jeu de résultats renvoyés après l'exécution de l'instruction SQL spécifiée
* @param sql Chaîne d'instruction d'assemblage de commande SQL à exécuter
* @return Le nombre d'enregistrements obtenus à partir des résultats de la requête
*/
public int getResultSetCount (String sql) {
//Enregistre la variable compteur qui renvoie le nombre de lignes enregistrées après l'exécution de l'instruction SQL spécifiée.
nombre entier = 0 ;
essayer {
// Vide le contenu original de l'objet jeu de résultats
this.rsSet = null ;
//Exécuter l'instruction SQL pour obtenir le jeu de résultats
this.rsSet = this.getPreparedStatement
(sql).executeQuery();
// Parcourez l'ensemble de résultats et accumulez le compteur
while (this.rsSet.next()) {
compte++;
}
} catch (SQLException e) {
e.printStackTrace();
}
nombre de retours ;
}
/**
* Fermer les ressources de connexion à la base de données (y compris les objets de jeu de résultats, les objets d'exécution de commandes et les objets de connexion)
*/
public void closeDBResource() {
essayer {
closeResultSet();
closePreparedStatement();
closeConnection();
} catch (SQLException sqlEx) {
System.err.println(sqlEx.getMessage
());
// Afficher les informations sur la pile d'exceptions sur la console
// sqlEx.printStackTrace();
}
}
/**
* Méthode pour fermer l'objet du jeu de résultats
* @throws SQLException
*/
private void closeResultSet() lance SQLException {
essayer {
si (this.rsSet != null) {
this.rsSet.close();
this.rsSet = null ;
}
} catch (SQLException sqlEx) {
throw new SQLException("Erreur lors de la fermeture de l'objet du jeu de résultats : " + sqlEx.getMessage());
// Afficher les informations sur la pile d'exceptions sur la console
// sqlEx.printStackTrace();
}
}
/**
* Méthode pour fermer l'objet d'exécution de commande de base de données
* @throws SQLException
*/
private void closePreparedStatement() lance
SQLException {
essayer {
if (this.preStatement != null) {
this.preStatement.close();
this.preStatement = null ;
}
} catch (SQLException sqlEx) {
throw new SQLException("Erreur de l'objet d'exécution de la commande de base de données : " + sqlEx.getMessage());
// Afficher les informations sur la pile d'exceptions sur la console
// sqlEx.printStackTrace();
}
}
/**
* Méthode pour fermer la connexion à la base de données
* @throws SQLException
*/
private void closeConnection() lance SQLException {
essayer {
if (this.dbConnection != null && (!
this.dbConnection.isClosed())) {
this.dbConnection.close();
}
} catch (SQLException sqlEx) {
throw new SQLException("Erreur lors de la fermeture de la connexion à la base de données : " + sqlEx.getMessage());
// Afficher les informations sur la pile d'exceptions sur la console
// sqlEx.printStackTrace();
}
}
}